Skip to contentSkip to conversation

Kprobes: Oops! in unregister_kprobe()

PATCH New Prasanna S Panchamukhi 1 participant 1 message Apr 11, 2005 kprobes

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Kprobes: Oops! in unregister_kprobe()

Hi,

Please find the patch below to fix Oops! in unregister_kprobe(). Please let me know if you any issues.

Thanks
Prasanna

kernel oops! when unregister_kprobe() is called on a non-registered kprobe. This patch fixes the above problem by checking if the probe exists before unregistering.

---

 linux-2.6.12-rc2-prasanna/kernel/kprobes.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletion(-)
kernel/kprobes.c renamed from kernel/kprobes.c~kprobes-unregister-oops-fix +5 -1
diff -puN kernel/kprobes.c~kprobes-unregister-oops-fix kernel/kprobes.c
@@ -110,13 +110,17 @@ rm_kprobe:
 void unregister_kprobe(struct kprobe *p)
 {
 	unsigned long flags;
-	arch_remove_kprobe(p);
 	spin_lock_irqsave(&kprobe_lock, flags);
+	if (!get_kprobe(p->addr)) {
+		spin_unlock_irqrestore(&kprobe_lock, flags);
+		return;
+	}
 	*p->addr = p->opcode;
 	hlist_del(&p->hlist);
 	flush_icache_range((unsigned long) p->addr,
 			   (unsigned long) p->addr + sizeof(kprobe_opcode_t));
 	spin_unlock_irqrestore(&kprobe_lock, flags);
+	arch_remove_kprobe(p);
 }
 
 

_

Signature · 5 lines
Prasanna S Panchamukhi
Linux Technology Center
India Software Labs, IBM Bangalore
Ph: 91-80-25044636
<[email protected]>