lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <1347475616.10751.74.camel@gandalf.local.home>
Date:	Wed, 12 Sep 2012 14:46:56 -0400
From:	Steven Rostedt <rostedt@...dmis.org>
To:	LKML <linux-kernel@...r.kernel.org>
Cc:	Ingo Molnar <mingo@...nel.org>,
	Andrew Morton <akpm@...ux-foundation.org>,
	Linus Torvalds <torvalds@...ux-foundation.org>,
	"Paul E. McKenney" <paulmck@...ibm.com>,
	Josh Triplett <josh@...htriplett.org>,
	Mathieu Desnoyers <mathieu.desnoyers@...icios.com>
Subject: [PATCH][GIT PULL][v3.7] trace: Don't declare trace_*_rcuidle
 functions in modules


Ingo,

Josh made a change to the tracing code that affects both the work
Paul McKenney and I are currently doing. At the last Kernel Summit back
in August, Linus said when such a case exists, it is best to make a
separate branch based off of his tree and place the change there. This
way, the repositories that need to share the change can both pull them
in and the SHA1 will match for both. Whichever branch is pulled in first
by Linus will also pull in the necessary change for the other branch as
well.

I made a separate branch from Linus's v3.6-rc5 (called tip/perf/rcu) and
applied Josh's change to it. Could you please pull this into perf/core
and whatever branch that Paul needs it in. Or just have Paul pull this
change as well.

Feel free to add the above text when merging the changes.

Thanks,

-- Steve


Please pull the latest tip/perf/rcu tree, which can be found at:

  git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git
tip/perf/rcu

Head SHA1: 7ece55a4a3a04abe37118b1d4fb0b702eeb1de4c


Josh Triplett (1):
      trace: Don't declare trace_*_rcuidle functions in modules

----
 include/linux/tracepoint.h |   28 ++++++++++++++++++----------
 1 file changed, 18 insertions(+), 10 deletions(-)
---------------------------
commit 7ece55a4a3a04abe37118b1d4fb0b702eeb1de4c
Author: Josh Triplett <josh@...htriplett.org>
Date:   Tue Sep 4 23:23:06 2012 -0700

    trace: Don't declare trace_*_rcuidle functions in modules
    
    Tracepoints declare a static inline trace_*_rcuidle variant of the trace
    function, to support safely generating trace events from the idle loop.
    Module code never actually uses that variant of trace functions, because
    modules don't run code that needs tracing with RCU idled.  However, the
    declaration of those otherwise unused functions causes the module to
    reference rcu_idle_exit and rcu_idle_enter, which RCU does not export to
    modules.
    
    To avoid this, don't generate trace_*_rcuidle functions for tracepoints
    declared in module code.
    
    Link: http://lkml.kernel.org/r/20120905062306.GA14756@leaf
    
    Reported-by: Steven Rostedt <rostedt@...dmis.org>
    Acked-by: Mathieu Desnoyers <mathieu.desnoyers@...icios.com>
    Acked-by: Paul E. McKenney <paulmck@...ux.vnet.ibm.com>
    Signed-off-by: Josh Triplett <josh@...htriplett.org>
    Signed-off-by: Steven Rostedt <rostedt@...dmis.org>

diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h
index 802de56..2f322c3 100644
--- a/include/linux/tracepoint.h
+++ b/include/linux/tracepoint.h
@@ -136,6 +136,22 @@ static inline void tracepoint_synchronize_unregister(void)
 		postrcu;						\
 	} while (0)
 
+#ifndef MODULE
+#define __DECLARE_TRACE_RCU(name, proto, args, cond, data_proto, data_args)	\
+	static inline void trace_##name##_rcuidle(proto)		\
+	{								\
+		if (static_key_false(&__tracepoint_##name.key))		\
+			__DO_TRACE(&__tracepoint_##name,		\
+				TP_PROTO(data_proto),			\
+				TP_ARGS(data_args),			\
+				TP_CONDITION(cond),			\
+				rcu_idle_exit(),			\
+				rcu_idle_enter());			\
+	}
+#else
+#define __DECLARE_TRACE_RCU(name, proto, args, cond, data_proto, data_args)
+#endif
+
 /*
  * Make sure the alignment of the structure in the __tracepoints section will
  * not add unwanted padding between the beginning of the section and the
@@ -151,16 +167,8 @@ static inline void tracepoint_synchronize_unregister(void)
 				TP_ARGS(data_args),			\
 				TP_CONDITION(cond),,);			\
 	}								\
-	static inline void trace_##name##_rcuidle(proto)		\
-	{								\
-		if (static_key_false(&__tracepoint_##name.key))		\
-			__DO_TRACE(&__tracepoint_##name,		\
-				TP_PROTO(data_proto),			\
-				TP_ARGS(data_args),			\
-				TP_CONDITION(cond),			\
-				rcu_idle_exit(),			\
-				rcu_idle_enter());			\
-	}								\
+	__DECLARE_TRACE_RCU(name, PARAMS(proto), PARAMS(args),		\
+		PARAMS(cond), PARAMS(data_proto), PARAMS(data_args))	\
 	static inline int						\
 	register_trace_##name(void (*probe)(data_proto), void *data)	\
 	{								\


Download attachment "signature.asc" of type "application/pgp-signature" (491 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ