Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2d75af2f authored by Jason Baron's avatar Jason Baron Committed by Steven Rostedt
Browse files

dynamic debug: Fix build issue with older gcc



On older gcc (3.3) dynamic debug fails to compile:

include/net/inet_connection_sock.h: In function `inet_csk_reset_xmit_timer':
include/net/inet_connection_sock.h:236: error: duplicate label declaration `do_printk'
include/net/inet_connection_sock.h:219: error: this is a previous declaration
include/net/inet_connection_sock.h:236: error: duplicate label declaration `out'
include/net/inet_connection_sock.h:219: error: this is a previous declaration
include/net/inet_connection_sock.h:236: error: duplicate label `do_printk'
include/net/inet_connection_sock.h:236: error: duplicate label `out'

Fix, by reverting the usage of JUMP_LABEL() in dynamic debug for now.

Cc: <stable@kernel.org>
Reported-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Tested-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: default avatarJason Baron <jbaron@redhat.com>
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent 870915e0
Loading
Loading
Loading
Loading
+4 −14
Original line number Diff line number Diff line
@@ -44,34 +44,24 @@ int ddebug_add_module(struct _ddebug *tab, unsigned int n,
extern int ddebug_remove_module(const char *mod_name);

#define dynamic_pr_debug(fmt, ...) do {					\
	__label__ do_printk;						\
	__label__ out;							\
	static struct _ddebug descriptor				\
	__used								\
	__attribute__((section("__verbose"), aligned(8))) =		\
	{ KBUILD_MODNAME, __func__, __FILE__, fmt, __LINE__,		\
		_DPRINTK_FLAGS_DEFAULT };				\
	JUMP_LABEL(&descriptor.enabled, do_printk);			\
	goto out;							\
do_printk:								\
	if (unlikely(descriptor.enabled))				\
		printk(KERN_DEBUG pr_fmt(fmt),	##__VA_ARGS__);		\
out:	;								\
	} while (0)


#define dynamic_dev_dbg(dev, fmt, ...) do {				\
	__label__ do_printk;						\
	__label__ out;							\
	static struct _ddebug descriptor				\
	__used								\
	__attribute__((section("__verbose"), aligned(8))) =		\
	{ KBUILD_MODNAME, __func__, __FILE__, fmt, __LINE__,		\
		_DPRINTK_FLAGS_DEFAULT };				\
	JUMP_LABEL(&descriptor.enabled, do_printk);			\
	goto out;							\
do_printk:								\
	if (unlikely(descriptor.enabled))				\
		dev_printk(KERN_DEBUG, dev, fmt, ##__VA_ARGS__);	\
out:	;								\
	} while (0)

#else
+4 −5
Original line number Diff line number Diff line
@@ -141,11 +141,10 @@ static void ddebug_change(const struct ddebug_query *query,
			else if (!dp->flags)
				dt->num_enabled++;
			dp->flags = newflags;
			if (newflags) {
				jump_label_enable(&dp->enabled);
			} else {
				jump_label_disable(&dp->enabled);
			}
			if (newflags)
				dp->enabled = 1;
			else
				dp->enabled = 0;
			if (verbose)
				printk(KERN_INFO
					"ddebug: changed %s:%d [%s]%s %s\n",