lkml.org 
[lkml]   [2015]   [Dec]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH v2] printk: help pr_debug and pr_devel to optimize out arguments
Date
Currently, pr_debug and pr_devel will not elide function call arguments
appearing in calls to the no_printk for these macros. This is because
all side effects must be honored before proceeding to the 0-value
assignment in no_printk.

The behavior is contrary to documentation found in the CodingStyle and
the header file where these functions are declared.

This patch corrects that behavior by shunting out the call to no_printk
completely. The format string is still checked by gcc for correctness, but
no code seems to be emitted in common cases.

fixes commit 5264f2f75d86 ("include/linux/printk.h: use and neaten
no_printk")

Signed-off-by: Aaron Conole <aconole@redhat.com>
Reported-by: Dmitry Vyukov <dvyukov@google.com>
Cc: Joe Perches <joe@perches.com>
Cc: Jason Baron <jbaron@akamai.com>
---
v1->v2 - Change no_printk behavior to elide arguments instead of modifying
individual pr_* macros, per Jason Baron's suggestion.

include/linux/printk.h | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/include/linux/printk.h b/include/linux/printk.h
index 9729565..cc3803a 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -106,13 +106,14 @@ struct va_format {

/*
* Dummy printk for disabled debugging statements to use whilst maintaining
- * gcc's format and side-effect checking.
+ * gcc's format checking.
*/
-static inline __printf(1, 2)
-int no_printk(const char *fmt, ...)
-{
- return 0;
-}
+#define no_printk(fmt, ...) \
+do { \
+ if (0) { \
+ printk(fmt, ##__VA_ARGS__); \
+ } \
+} while (0)

#ifdef CONFIG_EARLY_PRINTK
extern asmlinkage __printf(1, 2)
--
2.6.1.133.gf5b6079


\
 
 \ /
  Last update: 2015-12-04 23:01    [W:0.080 / U:0.144 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site