From: Greg Kroah-Hartman Date: Tue, 20 Aug 2019 20:25:46 +0000 (-0700) Subject: 4.4-stable patches X-Git-Tag: v4.19.68~19 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=18114b91d2ee6e33c2b60cfb8746cc678569cedf;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: asm-generic-default-bug_on-x-to-if-x-bug.patch --- diff --git a/queue-4.4/asm-generic-default-bug_on-x-to-if-x-bug.patch b/queue-4.4/asm-generic-default-bug_on-x-to-if-x-bug.patch new file mode 100644 index 00000000000..70151aef7ba --- /dev/null +++ b/queue-4.4/asm-generic-default-bug_on-x-to-if-x-bug.patch @@ -0,0 +1,76 @@ +From 3c047057d1206ec0f3b88c7809cacba478067a0c Mon Sep 17 00:00:00 2001 +From: Arnd Bergmann +Date: Sat, 21 Nov 2015 00:27:26 +0100 +Subject: asm-generic: default BUG_ON(x) to if(x)BUG() + +From: Arnd Bergmann + +commit 3c047057d1206ec0f3b88c7809cacba478067a0c upstream. + +When CONFIG_BUG is disabled, BUG_ON() will only evaluate the condition, +but will not actually stop the current thread. GCC warns about a couple +of BUG_ON() users where this actually leads to further undefined +behavior: + +include/linux/ceph/osdmap.h: In function 'ceph_can_shift_osds': +include/linux/ceph/osdmap.h:54:1: warning: control reaches end of non-void function +fs/ext4/inode.c: In function 'ext4_map_blocks': +fs/ext4/inode.c:548:5: warning: 'retval' may be used uninitialized in this function +drivers/mfd/db8500-prcmu.c: In function 'prcmu_config_clkout': +drivers/mfd/db8500-prcmu.c:762:10: warning: 'div_mask' may be used uninitialized in this function +drivers/mfd/db8500-prcmu.c:769:13: warning: 'mask' may be used uninitialized in this function +drivers/mfd/db8500-prcmu.c:757:7: warning: 'bits' may be used uninitialized in this function +drivers/tty/serial/8250/8250_core.c: In function 'univ8250_release_irq': +drivers/tty/serial/8250/8250_core.c:252:18: warning: 'i' may be used uninitialized in this function +drivers/tty/serial/8250/8250_core.c:235:19: note: 'i' was declared here + +There is an obvious conflict of interest here: on the one hand, someone +who disables CONFIG_BUG() will want the kernel to be as small as possible +and doesn't care about printing error messages to a console that nobody +looks at. On the other hand, running into a BUG_ON() condition means that +something has gone wrong, and we probably want to also stop doing things +that might cause data corruption. + +This patch picks the second choice, and changes the NOP to BUG(), which +normally stops the execution of the current thread in some form (endless +loop or a trap). This follows the logic we applied in a4b5d580e078 ("bug: +Make BUG() always stop the machine"). + +For ARM multi_v7_defconfig, the size slightly increases: + +section CONFIG_BUG=y CONFIG_BUG=n CONFIG_BUG=n+patch + + .text 8320248 | 8180944 | 8207688 + .rodata 3633720 | 3567144 | 3570648 + __bug_table 32508 | --- | --- + __modver 692 | 1584 | 2176 + .init.text 558132 | 548300 | 550088 + .exit.text 12380 | 12256 | 12380 + .data 1016672 | 1016064 | 1016128 + Total 14622556 | 14374510 | 14407326 + +So instead of saving 1.70% of the total image size, we only save 1.48% +by turning off CONFIG_BUG, but in return we can ensure that we don't run +into cases of uninitialized variable or return code uses when something +bad happens. Aside from that, we significantly reduce the number of +warnings in randconfig builds, which makes it easier to fix the warnings +about other problems. + +Signed-off-by: Arnd Bergmann +Signed-off-by: Greg Kroah-Hartman + +--- + include/asm-generic/bug.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/include/asm-generic/bug.h ++++ b/include/asm-generic/bug.h +@@ -143,7 +143,7 @@ extern void warn_slowpath_null(const cha + #endif + + #ifndef HAVE_ARCH_BUG_ON +-#define BUG_ON(condition) do { if (condition) ; } while (0) ++#define BUG_ON(condition) do { if (condition) BUG(); } while (0) + #endif + + #ifndef HAVE_ARCH_WARN_ON diff --git a/queue-4.4/series b/queue-4.4/series index 2fc6cffb5c8..71c8336fb97 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -65,3 +65,4 @@ backport-minimal-compiler_attributes.h-to-support-gc.patch include-linux-module.h-copy-__init-__exit-attrs-to-i.patch arm64-compat-allow-single-byte-watchpoints-on-all-addresses.patch input-psmouse-fix-build-error-of-multiple-definition.patch +asm-generic-default-bug_on-x-to-if-x-bug.patch