Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 04dea5f9 authored by Prasanna S Panchamukhi's avatar Prasanna S Panchamukhi Committed by Linus Torvalds
Browse files

[PATCH] Kprobes: Oops! in unregister_kprobe()



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: default avatarPrasanna S Panchamukhi <prasanna@in.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 0b9e2cac
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -107,13 +107,17 @@ int register_kprobe(struct kprobe *p)
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 = {