jump label: Fix deadlock b/w jump_label_mutex vs. text_mutex
authorJason Baron <jbaron@redhat.com>
Fri, 1 Oct 2010 21:23:48 +0000 (17:23 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Thu, 28 Oct 2010 13:17:40 +0000 (09:17 -0400)
commit91bad2f8d3057482b9afb599f14421b007136960
treeea5e09e74107593dcfc192c65c1395ed22674df4
parentb842f8faf6c7dc2005c6a70631c1a91bac02f180
jump label: Fix deadlock b/w jump_label_mutex vs. text_mutex

register_kprobe() downs the 'text_mutex' and then calls
jump_label_text_reserved(), which downs the 'jump_label_mutex'.
However, the jump label code takes those mutexes in the reverse
order.

Fix by requiring the caller of jump_label_text_reserved() to do
the jump label locking via the newly added: jump_label_lock(),
jump_label_unlock(). Currently, kprobes is the only user
of jump_label_text_reserved().

Reported-by: Ingo Molnar <mingo@elte.hu>
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Signed-off-by: Jason Baron <jbaron@redhat.com>
LKML-Reference: <759032c48d5e30c27f0bba003d09bffa8e9f28bb.1285965957.git.jbaron@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
include/linux/jump_label.h
kernel/jump_label.c
kernel/kprobes.c