# git rev-parse -q --verify 736116436e5b99b46e1a49c17cae6f6ee0a30e84^{commit} 736116436e5b99b46e1a49c17cae6f6ee0a30e84 already have revision, skipping fetch # git checkout -q -f -B kisskb 736116436e5b99b46e1a49c17cae6f6ee0a30e84 # git clean -qxdf # < git log -1 # commit 736116436e5b99b46e1a49c17cae6f6ee0a30e84 # Author: Gustavo A. R. Silva # Date: Wed Sep 2 23:25:55 2020 -0500 # # include: jhash/signal: Fix fall-through warnings for Clang # # In preparation to enable -Wimplicit-fallthrough for Clang, explicitly # add break statements instead of letting the code fall through to the # next case. # # This patch adds four break statements that, together, fix almost 80,000 # warnings when building Linux 5.9-rc3 with Clang 12.0.0 and this[1] change # reverted. Notice that in order to enable -Wimplicit-fallthrough for Clang, # such change[1] is meant to be reverted at some point. So, this patch helps # to move in that direction. # # Something important to mention is that there is currently a discrepancy # between GCC and Clang when dealing with switch fall-through to empty case # statements or to cases that only contain a break/continue/return # statement[2][3][4]. # # Now that the -Wimplicit-fallthrough option has been globally enabled[5], # any compiler should really warn on missing either a fallthrough annotation # or any of the other case-terminating statements (break/continue/return/ # goto) when falling through to the next case statement. Making exceptions # to this introduces variation in case handling which may continue to lead # to bugs, misunderstandings, and a general lack of robustness. The point # of enabling options like -Wimplicit-fallthrough is to prevent human error # and aid developers in spotting bugs before their code is even built/ # submitted/committed, therefore eliminating classes of bugs. So, min order # to really accomplish this, we should, and can, move in the direction of # addressing any error-prone scenarios and get rid of the unintentional # fallthrough bug-class in the kernel, entirely, even if there is some minor # redundancy. Better to have explicit case-ending statements than continue to # have exceptions where one must guess as to the right result. The compiler # will eliminate any actual redundancy. # # [1] commit e2079e93f562c ("kbuild: Do not enable -Wimplicit-fallthrough for clang for now") # [2] https://github.com/ClangBuiltLinux/linux/issues/636 # [3] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91432 # [4] https://godbolt.org/z/xgkvIh # [5] commit a035d552a93b ("Makefile: Globally enable fall-through warning") # # Co-developed-by: Kees Cook # Signed-off-by: Kees Cook # Signed-off-by: Gustavo A. R. Silva # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/nds32le-linux/bin/nds32le-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/nds32le-linux/bin/nds32le-linux-ld --version # < git log --format=%s --max-count=1 736116436e5b99b46e1a49c17cae6f6ee0a30e84 # < make -s -j 8 ARCH=nds32 O=/kisskb/build/gustavoars_nds32-allmodconfig_nds32le-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/nds32le-linux/bin/nds32le-linux- allmodconfig # < make -s -j 8 ARCH=nds32 O=/kisskb/build/gustavoars_nds32-allmodconfig_nds32le-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/nds32le-linux/bin/nds32le-linux- help # make -s -j 8 ARCH=nds32 O=/kisskb/build/gustavoars_nds32-allmodconfig_nds32le-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/nds32le-linux/bin/nds32le-linux- olddefconfig # make -s -j 8 ARCH=nds32 O=/kisskb/build/gustavoars_nds32-allmodconfig_nds32le-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/nds32le-linux/bin/nds32le-linux- :1511:2: warning: #warning syscall clone3 not implemented [-Wcpp] /kisskb/src/drivers/input/joystick/analog.c:160:2: warning: #warning Precise timer not defined for this architecture. [-Wcpp] #warning Precise timer not defined for this architecture. ^~~~~~~ In file included from /kisskb/src/include/linux/printk.h:405, from /kisskb/src/include/linux/kernel.h:15, from /kisskb/src/include/linux/clk.h:13, from /kisskb/src/drivers/crypto/sa2ul.c:11: /kisskb/src/drivers/crypto/sa2ul.c: In function 'sa_sha_init': /kisskb/src/drivers/crypto/sa2ul.c:1486:33: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] crypto_ahash_digestsize(tfm), (u64)rctx); ^ /kisskb/src/include/linux/dynamic_debug.h:125:15: note: in definition of macro '__dynamic_func_call' func(&id, ##__VA_ARGS__); \ ^~~~~~~~~~~ /kisskb/src/include/linux/dynamic_debug.h:157:2: note: in expansion of macro '_dynamic_func_call' _dynamic_func_call(fmt,__dynamic_dev_dbg, \ ^~~~~~~~~~~~~~~~~~ /kisskb/src/include/linux/dev_printk.h:115:2: note: in expansion of macro 'dynamic_dev_dbg' dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~~~~~~~~ /kisskb/src/drivers/crypto/sa2ul.c:1485:2: note: in expansion of macro 'dev_dbg' dev_dbg(sa_k3_dev, "init: digest size: %d, rctx=%llx\n", ^~~~~~~ WARNING: modpost: EXPORT symbol "clear_page" [vmlinux] version generation failed, symbol will not be versioned. WARNING: modpost: EXPORT symbol "copy_page" [vmlinux] version generation failed, symbol will not be versioned. Completed OK # rm -rf /kisskb/build/gustavoars_nds32-allmodconfig_nds32le-gcc8 # Build took: 0:23:15.600052