From: Sasha Levin Date: Tue, 2 Jun 2020 02:13:10 +0000 (-0400) Subject: Fixes for 4.4 X-Git-Tag: v4.4.226~9 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b3ad92224b646bf173af2d231ddeafb178fa5f94;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 4.4 Signed-off-by: Sasha Levin --- 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 index 00000000000..d7ecc448866 --- /dev/null +++ b/queue-4.4/printk-help-pr_debug-and-pr_devel-to-optimize-out-ar.patch @@ -0,0 +1,61 @@ +From 33ab3e22415b2cee9f1899dc3d7c84d96db919ce Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 15 Jan 2016 16:59:12 -0800 +Subject: printk: help pr_debug and pr_devel to optimize out arguments + +From: Aaron Conole + +[ 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 +Reported-by: Dmitry Vyukov +Cc: Joe Perches +Cc: Jason Baron +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Sasha Levin +--- + 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 + diff --git a/queue-4.4/series b/queue-4.4/series index 738a6560577..957fc44804c 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -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