[PATCH] Kprobes: Fix deadlock in function-return probes
authorAnanth N Mavinakayanahalli <ananth@in.ibm.com>
Fri, 3 Feb 2006 11:03:43 +0000 (03:03 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Fri, 3 Feb 2006 16:32:00 +0000 (08:32 -0800)
commit278ff9537030bbb292b33504f5e1f6e0126793eb
tree0087828bdf4d9a4fb57c9bcafd068ff058b39797
parente65cefe87beda627c0bfba39b387ee4bffedc93c
[PATCH] Kprobes: Fix deadlock in function-return probes

When two function-return probes are inserted on kfree()[1] and the second
on say, sys_link()[2], and later [2] is unregistered, we have a deadlock as
kfree is called with the kretprobe_lock held and the function-return probe
on kfree will also try to grab the same lock.

However, we can move the kfree() during unregistration to outside the
spinlock as we are sure that no instances from the free list will be used
after synchronized_sched() returns during the unregistration process.
Thanks to Masami Hiramatsu for spotting this.

Signed-off-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
kernel/kprobes.c