Messages in this thread Patch in this message |  | | | Subject | [PATCH][GIT PULL][v3.3] tracepoints/module: Fix disabling tracepoints with taint CRAP or OOT | | From | Steven Rostedt <> | | Date | Sun, 15 Jan 2012 15:10:50 -0500 |
| |
Ingo,
I was told when compiling modules out of tree, their tracepoints no longer work. I tried it out by compiling the sample trace_event code, and sure enough the tracepoints would not enable. They would look like they were enabled, but no tracing would happen. I ran this through ktest git bisect, and found it was caused by the commit:
commit 2449b8ba0745327c5fa49a8d9acffe03b2eded69 Author: Ben Hutchings <ben@decadent.org.uk> Date: Mon Oct 24 15:12:28 2011 +0200
module,bug: Add TAINT_OOT_MODULE flag for modules not built in-tree
Then I looked at the tracepoint.c code, and found that it does not enable tracepoints in any module that is tainted. This restriction should not apply to out-of-tree or staging modules. Which this patch fixes.
Note, I've included this on top of my last "urgent" branch which I noticed that was pulled into perf/core.
https://lkml.org/lkml/2012/1/6/357
I still think it's a good idea to include both into mainline now. They are both marked for the stable release as well.
Thanks!
-- Steve
Please pull the latest tip/perf/urgent tree, which can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git tip/perf/urgent
Head SHA1: a4bd073dcd870c3eac1505eb8f0abe35d38cc98d
Steven Rostedt (1): tracepoints/module: Fix disabling tracepoints with taint CRAP or OOT
---- kernel/tracepoint.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) --------------------------- commit a4bd073dcd870c3eac1505eb8f0abe35d38cc98d Author: Steven Rostedt <srostedt@redhat.com> Date: Fri Jan 13 21:40:59 2012 -0500 tracepoints/module: Fix disabling tracepoints with taint CRAP or OOT
Tracepoints are disabled for tainted modules, which is usually because the module is either proprietary or was forced, and we don't want either of them using kernel tracepoints.
But, a module can also be tainted by being in the staging directory or compiled out of tree. Either is fine for use with tracepoints, no need to punish them. I found this out when I noticed that my sample trace event module, when done out of tree, stopped working.
Cc: stable@vger.kernel.org # 3.2 Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Ben Hutchings <ben@decadent.org.uk> Cc: Dave Jones <davej@redhat.com> Cc: Greg Kroah-Hartman <gregkh@suse.de> Cc: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
diff --git a/kernel/tracepoint.c b/kernel/tracepoint.c index db110b8..dc63553 100644 --- a/kernel/tracepoint.c +++ b/kernel/tracepoint.c @@ -636,8 +636,9 @@ static int tracepoint_module_coming(struct module *mod) /* * We skip modules that tain the kernel, especially those with different * module header (for forced load), to make sure we don't cause a crash. + * Staging and out-of-tree modules are fine. */ - if (mod->taints) + if (mod->taints & ~((1 << TAINT_OOT_MODULE) | (1 << TAINT_CRAP))) return 0; mutex_lock(&tracepoints_mutex); tp_mod = kmalloc(sizeof(struct tp_module), GFP_KERNEL); [unhandled content-type:application/pgp-signature]
|  |