tracing: Return -EBUSY when event_enable_func() fails to get module
authorMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Thu, 16 May 2013 11:48:49 +0000 (20:48 +0900)
committerSteven Rostedt <rostedt@goodmis.org>
Thu, 16 May 2013 15:01:16 +0000 (11:01 -0400)
commit6ed0106667d76589cb648c27edb4f4ffbf9d59ca
tree703a6db004b022ddebdfaf186c66e5bfabc03e5f
parentb62fdd97fcae17e483b005bafd13fadbd9840672
tracing: Return -EBUSY when event_enable_func() fails to get module

Since try_module_get() returns false( = 0) when it fails to
pindown a module, event_enable_func() returns 0 which means
"succeed". This can cause a kernel panic when the entry
is removed, because the event is already released.

This fixes the bug by returning -EBUSY, because the reason
why it fails is that the module is being removed at that time.

Link: http://lkml.kernel.org/r/20130516114848.13508.97899.stgit@mhiramat-M0-7522
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Tom Zanussi <tom.zanussi@intel.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@redhat.com>
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
kernel/trace/trace_events.c