]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 4.4
authorSasha Levin <sashal@kernel.org>
Tue, 2 Jun 2020 02:13:10 +0000 (22:13 -0400)
committerSasha Levin <sashal@kernel.org>
Tue, 2 Jun 2020 02:13:10 +0000 (22:13 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-4.4/printk-help-pr_debug-and-pr_devel-to-optimize-out-ar.patch [new file with mode: 0644]
queue-4.4/series

diff --git a/queue-4.4/printk-help-pr_debug-and-pr_devel-to-optimize-out-ar.patch b/queue-4.4/printk-help-pr_debug-and-pr_devel-to-optimize-out-ar.patch
new file mode 100644 (file)
index 0000000..d7ecc44
--- /dev/null
@@ -0,0 +1,61 @@
+From 33ab3e22415b2cee9f1899dc3d7c84d96db919ce Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 15 Jan 2016 16:59:12 -0800
+Subject: printk: help pr_debug and pr_devel to optimize out arguments
+
+From: Aaron Conole <aconole@redhat.com>
+
+[ Upstream commit fe22cd9b7c980b8b948ec85f034a8668c57ec867 ]
+
+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.
+
+[akpm@linux-foundation.org: remove braces, per Joe]
+Fixes: 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>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ include/linux/printk.h | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/include/linux/printk.h b/include/linux/printk.h
+index 9729565c25ff..9ccbdf2c1453 100644
+--- a/include/linux/printk.h
++++ b/include/linux/printk.h
+@@ -106,13 +106,13 @@ 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.25.1
+
index 738a6560577c9a6aafed77e9115b8e9a395cf6bf..957fc44804c89331e4426b53ece1ff076865b167 100644 (file)
@@ -46,3 +46,4 @@ mm-vmalloc.c-don-t-dereference-possible-null-pointer-in-__vunmap.patch
 asm-prototypes-clear-any-cpp-defines-before-declaring-the-functions.patch
 sc16is7xx-move-label-err_spi-to-correct-section.patch
 drm-msm-fix-possible-null-dereference-on-failure-of-get_pages.patch
+printk-help-pr_debug-and-pr_devel-to-optimize-out-ar.patch