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-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120328100027.GA4420@bombadil.infradead.org>
Date:	Wed, 28 Mar 2012 06:00:27 -0400
From:	"Luis R. Rodriguez" <mcgrof@...badil.infradead.org>
To:	Johannes Berg <johannes@...solutions.net>
Cc:	"Luis R. Rodriguez" <mcgrof@...jolero.org>,
	linux-wireless@...r.kernel.org, linux-kernel@...r.kernel.org,
	lf_driver_backport@...ts.linux-foundation.org
Subject: Re: [PATCH 4/4] compat: add some tracing backport work

On Mon, Mar 26, 2012 at 08:58:22AM -0400, Luis R. Rodriguez wrote:
> On Mon, Mar 26, 2012 at 10:49:28AM +0200, Johannes Berg wrote:
> > On Wed, 2012-03-21 at 21:29 -0700, Luis R. Rodriguez wrote:
> > 
> > > But no dice. I then figured it may be my kernel with
> > > CONFIG_TRACEPOINTS=y and indeed that is the case -- so we have to
> > > consider the case where the target kernel may have tracing enabled and
> > > we have to disable it somehow. Undef'ing CONFIG_TRACEPOINTS and
> > > DECLARE_TRACE doesn't really do it.
> > 
> > Oh, ok, yuck. So I guess we can't easily disable tracing if it's enabled
> > in the base kernel ...
> 
> Its a  bit tough.

I've managed to backport tracing it seems, even when CONFIG_TRACEPOINTS
is enabled. The patch below covers that. I'll spew out the latest
error log on compaling compat-wireless though, this is down on
2.6.31.

/home/mcgrof/devel/compat-wireless/drivers/net/wireless/libertas/if_sdio.c: In function ‘if_sdio_power_on’:
/home/mcgrof/devel/compat-wireless/drivers/net/wireless/libertas/if_sdio.c:771:19: warning: unused variable ‘host’
/home/mcgrof/devel/compat-wireless/drivers/net/wireless/libertas/if_sdio.c: In function ‘if_sdio_power_save’:
/home/mcgrof/devel/compat-wireless/drivers/net/wireless/libertas/if_sdio.c:1071:2: error: implicit declaration of function ‘pm_runtime_put_sync’
/home/mcgrof/devel/compat-wireless/drivers/net/wireless/libertas/if_sdio.c: In function ‘if_sdio_power_restore’:
/home/mcgrof/devel/compat-wireless/drivers/net/wireless/libertas/if_sdio.c:1081:2: error: implicit declaration of function ‘pm_runtime_get_sync’
/home/mcgrof/devel/compat-wireless/drivers/net/wireless/libertas/if_sdio.c: In function ‘if_sdio_probe’:
/home/mcgrof/devel/compat-wireless/drivers/net/wireless/libertas/if_sdio.c:1231:2: error: implicit declaration of function ‘pm_runtime_put_noidle’
/home/mcgrof/devel/compat-wireless/drivers/net/wireless/libertas/if_sdio.c: In function ‘if_sdio_remove’:
/home/mcgrof/devel/compat-wireless/drivers/net/wireless/libertas/if_sdio.c:1268:2: error: implicit declaration of function ‘pm_runtime_get_noresume’
make[4]: *** [/home/mcgrof/devel/compat-wireless/drivers/net/wireless/libertas/if_sdio.o] Error 1

This compilation issue is not related to tracing and seems trivial to
resolve. So hey this is great progress..

>From 7d549b33d180b96a6b34e1c9d1298a1c1ec557d4 Mon Sep 17 00:00:00 2001
From: "Luis R. Rodriguez" <mcgrof@...jolero.org>
Date: Wed, 28 Mar 2012 02:45:07 -0700
Subject: [PATCH] compat: complete tracepoint backport

Tested also against compat-wireless against:

	* 2.6.33
	* 2.6.32

I'm happy with this.

compat ckmake:

Trying kernel                  3.3.0-030300rc2-generic  [OK]
Trying kernel                     3.2.2-030202-generic  [OK]
Trying kernel                    3.1.10-030110-generic  [OK]
Trying kernel                    3.0.18-030018-generic  [OK]
Trying kernel                  2.6.39-02063904-generic  [OK]
Trying kernel                        2.6.38-13-generic  [OK]
Trying kernel                  2.6.38-02063808-generic  [OK]
Trying kernel                  2.6.37-02063706-generic  [OK]
Trying kernel                  2.6.36-02063604-generic  [OK]
Trying kernel                  2.6.35-02063512-generic  [OK]
Trying kernel                  2.6.34-02063410-generic  [OK]
Trying kernel                  2.6.33-02063305-generic  [OK]
Trying kernel                  2.6.32-02063255-generic  [OK]
Trying kernel                        2.6.31-22-generic  [OK]
Trying kernel                  2.6.31-02063113-generic  [OK]
Trying kernel                  2.6.30-02063010-generic  [OK]
Trying kernel                  2.6.29-02062906-generic  [OK]
Trying kernel                  2.6.28-02062810-generic  [OK]
Trying kernel                    2.6.27-020627-generic  [OK]
Trying kernel                    2.6.26-020626-generic  [OK]
Trying kernel                    2.6.25-020625-generic  [OK]
Trying kernel                    2.6.24-020624-generic  [OK]

Signed-off-by: Luis R. Rodriguez <mcgrof@...jolero.org>
---
 include/linux/tracepoint.h |  145 ++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 140 insertions(+), 5 deletions(-)

diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h
index a5bd743..44c9a5d 100644
--- a/include/linux/tracepoint.h
+++ b/include/linux/tracepoint.h
@@ -13,10 +13,12 @@
 #define TP_STRUCT__entry(args...) args
 #endif
 
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33))
 /* Backports 091ad365, a rename */
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33))
 #define DECLARE_EVENT_CLASS TRACE_EVENT_TEMPLATE
+#endif
 
+/* Backpports 2939b0469 */
 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30))
 #define TP_PROTO TPPROTO
 #define TP_ARGS TPARGS
@@ -24,7 +26,143 @@
 #define TP_RAW_FMT TPRAWFMT
 #endif
 
-#endif
+/* Force disabling tracing */
+
+#undef TRACE_EVENT
+#define TRACE_EVENT(name, proto, ...) \
+DECLARE_TRACE(name, PARAMS(proto), PARAMS(args))
+
+#undef DECLARE_EVENT_CLASS
+#define DECLARE_EVENT_CLASS(...)
+#undef DEFINE_EVENT
+
+#define DEFINE_EVENT(template, name, proto, args)               \
+	DECLARE_TRACE(name, PARAMS(proto), PARAMS(args))
+
+#undef DECLARE_TRACE_NOARGS
+#define DECLARE_TRACE_NOARGS(name)					\
+		__DECLARE_TRACE(name, void, , 1, void *__data, __data)
+
+
+/* Backports 38516ab59fbc5b3bb278cf5e1fe2867c70cff32e */
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
+
+#undef DECLARE_TRACE
+#define DECLARE_TRACE(name, proto, args)				\
+		__DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), 1,	\
+				PARAMS(void *__data, proto),		\
+				PARAMS(__data, args))
+
+#undef DECLARE_TRACE_CONDITION
+#define DECLARE_TRACE_CONDITION(name, proto, args, cond)		\
+	__DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), PARAMS(cond), \
+			PARAMS(void *__data, proto),			\
+			PARAMS(__data, args))
+
+#else
+
+#undef DECLARE_TRACE
+#define DECLARE_TRACE(name, proto, args)				\
+		__DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), 1,	\
+				PARAMS(void *__data, proto),		\
+				PARAMS(__data, args))
+
+#undef DECLARE_TRACE_CONDITION
+#define DECLARE_TRACE_CONDITION(name, proto, args, cond)		\
+	__DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), PARAMS(cond), \
+			PARAMS(void *__data, proto),			\
+			PARAMS(__data, args))
+#endif /* backport 38516ab59fbc5b3bb278cf5e1fe2867c70cff32e */
+
+/* Backports 38516ab59fbc5b3bb278cf5e1fe2867c70cff32e */
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
+
+/* Backports c420970ef476d7d68df119711700666224001f43 */
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30))
+
+#undef __DECLARE_TRACE
+#define __DECLARE_TRACE(name, proto, args, cond, data_proto, data_args) \
+	static inline void trace_##name(proto)				\
+	{ }								\
+	static inline void trace_##name##_rcuidle(proto)		\
+	{ }								\
+	static inline int						\
+	register_trace_##name(void (*probe)(proto))			\
+	{								\
+		return -ENOSYS;						\
+	}								\
+	static inline void						\
+	unregister_trace_##name(void (*probe)(proto))			\
+	{								\
+		return -ENOSYS;						\
+	}								\
+	static inline void check_trace_callback_type_##name(void (*cb)(data_proto)) \
+	{								\
+	}
+#else
+
+#undef __DECLARE_TRACE
+#define __DECLARE_TRACE(name, proto, args, cond, data_proto, data_args) \
+	static inline void trace_##name(proto)				\
+	{ }								\
+	static inline void trace_##name##_rcuidle(proto)		\
+	{ }								\
+	static inline int						\
+	register_trace_##name(void (*probe)(proto))			\
+	{								\
+		return -ENOSYS;						\
+	}								\
+	static inline int						\
+	unregister_trace_##name(void (*probe)(proto))			\
+	{								\
+		return -ENOSYS;						\
+	}								\
+	static inline void check_trace_callback_type_##name(void (*cb)(data_proto)) \
+	{								\
+	}
+#endif /* backport c420970ef476d7d68df119711700666224001f43 */
+
+#else
+
+#undef __DECLARE_TRACE
+#define __DECLARE_TRACE(name, proto, args, cond, data_proto, data_args) \
+	static inline void trace_##name(proto)				\
+	{ }								\
+	static inline void trace_##name##_rcuidle(proto)		\
+	{ }								\
+	static inline int						\
+	register_trace_##name(void (*probe)(data_proto),		\
+			      void *data)				\
+	{								\
+		return -ENOSYS;						\
+	}								\
+	static inline int						\
+	unregister_trace_##name(void (*probe)(data_proto),		\
+				void *data)				\
+	{								\
+		return -ENOSYS;						\
+	}								\
+	static inline void check_trace_callback_type_##name(void (*cb)(data_proto)) \
+	{								\
+	}
+
+#endif /* backport 38516ab59fbc5b3bb278cf5e1fe2867c70cff32e */
+
+#undef DEFINE_TRACE_FN
+#define DEFINE_TRACE_FN(name, reg, unreg)
+
+#undef DEFINE_TRACE
+#define DEFINE_TRACE(name)
+
+#undef EXPORT_TRACEPOINT_SYMBOL_GPL
+#define EXPORT_TRACEPOINT_SYMBOL_GPL(name)
+
+#undef EXPORT_TRACEPOINT_SYMBOL
+#define EXPORT_TRACEPOINT_SYMBOL(name)
+
+#ifdef CONFIG_TRACEPOINTS
+#else /* CONFIG_TRACEPOINTS */
+#endif /* CONFIG_TRACEPOINTS */
 
 #else /* just disable tracing */
 
@@ -42,9 +180,6 @@ static inline void trace_ ## name(proto) {}
 #define TP_ARGS(args...)   args
 #define TP_CONDITION(args...)      args
 
-struct tracepoint_iter {
-};
-
 #endif /* (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27)) */
 
 #endif	/* _COMPAT_LINUX_TRACEPOINT_H */
-- 
1.7.10.rc1.22.gf5241

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ