From: Prasanna S Panchamukhi 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. Signed-off-by: Prasanna S Panchamukhi Signed-off-by: Andrew Morton --- kernel/kprobes.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletion(-) diff -puN kernel/kprobes.c~kprobes-oops-in-unregister_kprobe kernel/kprobes.c --- 25/kernel/kprobes.c~kprobes-oops-in-unregister_kprobe 2005-04-26 01:24:23.553607576 -0700 +++ 25-akpm/kernel/kprobes.c 2005-04-26 01:24:23.556607120 -0700 @@ -107,13 +107,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); } static struct notifier_block kprobe_exceptions_nb = { _