All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Makefile: Globally enable fall-through warning
@ 2022-05-17 17:35 ALOK JHA
  2022-05-17 18:42 ` Andrew Morton
  2022-05-17 18:46 ` Andrew Morton
  0 siblings, 2 replies; 12+ messages in thread
From: ALOK JHA @ 2022-05-17 17:35 UTC (permalink / raw)
  To: alok08jha
  Cc: Gustavo A. R. Silva, Masahiro Yamada, Andrew Morton,
	Michal Marek, Kees Cook, linux-kbuild

From: "Gustavo A. R. Silva" <gustavo@embeddedor.com>

Now that all the fall-through warnings have been addressed in the
kernel, enable the fall-through warning globally.

Also, update the deprecated.rst file to include implicit fall-through
as 'deprecated' so people can be pointed to a single location for
justification.

Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Michal Marek <michal.lkml@markovi.net>
Cc: Kees Cook <keescook@chromium.org>
Cc: linux-kbuild@vger.kernel.org
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
---
 Documentation/process/deprecated.rst | 14 ++++++++++++++
 Makefile                             |  3 +++
 2 files changed, 17 insertions(+)

diff --git a/Documentation/process/deprecated.rst b/Documentation/process/deprecated.rst
index 49e0f64a3427..053b24a6dd38 100644
--- a/Documentation/process/deprecated.rst
+++ b/Documentation/process/deprecated.rst
@@ -119,3 +119,17 @@ array may exceed the remaining memory in the stack segment. This could
 lead to a crash, possible overwriting sensitive contents at the end of the
 stack (when built without `CONFIG_THREAD_INFO_IN_TASK=y`), or overwriting
 memory adjacent to the stack (when built without `CONFIG_VMAP_STACK=y`)
+
+Implicit switch case fall-through
+---------------------------------
+The C language allows switch cases to "fall through" when
+a "break" statement is missing at the end of a case. This,
+however, introduces ambiguity in the code, as it's not always
+clear if the missing break is intentional or a bug. As there
+have been a long list of flaws `due to missing "break" statements
+<https://cwe.mitre.org/data/definitions/484.html>`_, we no longer allow
+"implicit fall-through". In order to identify an intentional fall-through
+case, we have adopted the marking used by static analyzers: a comment
+saying `/* Fall through */`. Once the C++17 `__attribute__((fallthrough))`
+is more widely handled by C compilers, static analyzers, and IDEs, we can
+switch to using that instead.
diff --git a/Makefile b/Makefile
index 9be5834073f8..bdf8eac51b07 100644
--- a/Makefile
+++ b/Makefile
@@ -843,6 +843,9 @@ NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
 # warn about C99 declaration after statement
 KBUILD_CFLAGS += -Wdeclaration-after-statement
 
+# Warn about unmarked fall-throughs in switch statement.
+KBUILD_CFLAGS += $(call cc-option,-Wimplicit-fallthrough=3,)
+
 # Variable Length Arrays (VLAs) should not be used anywhere in the kernel
 KBUILD_CFLAGS += -Wvla
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread
* Re: [PATCH] Makefile: Globally enable fall-through warning
@ 2019-07-28 13:58 Guenter Roeck
  2019-07-28 16:42 ` Gustavo A. R. Silva
  0 siblings, 1 reply; 12+ messages in thread
From: Guenter Roeck @ 2019-07-28 13:58 UTC (permalink / raw)
  To: Gustavo A. R. Silva; +Cc: Linus Torvalds, linux-kernel

On Thu, Jun 06, 2019 at 07:46:17PM -0500, Gustavo A. R. Silva wrote:
> Now that all the fall-through warnings have been addressed in the
> kernel, enable the fall-through warning globally.
> 

Not really "all".

powerpc:85xx/sbc8548_defconfig:

arch/powerpc/kernel/align.c: In function ‘emulate_spe’:
arch/powerpc/kernel/align.c:178:8: error: this statement may fall through

Plus many more similar errors in the same file.

All sh builds:

arch/sh/kernel/disassemble.c: In function 'print_sh_insn':
arch/sh/kernel/disassemble.c:478:8: error: this statement may fall through

Again, this is seen in several places.

mips:cavium_octeon_defconfig:

arch/mips/cavium-octeon/octeon-usb.c: In function 'dwc3_octeon_clocks_start':
include/linux/device.h:1499:2: error: this statement may fall through

None of those are from recent changes. And this is just from my small
subset of test builds.

Guenter

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2022-05-17 19:50 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-17 17:35 [PATCH] Makefile: Globally enable fall-through warning ALOK JHA
2022-05-17 18:42 ` Andrew Morton
2022-05-17 18:46 ` Andrew Morton
2022-05-17 19:40   ` Jeff Johnson
2022-05-17 19:59   ` Gustavo A. R. Silva
  -- strict thread matches above, loose matches on Subject: below --
2019-07-28 13:58 Guenter Roeck
2019-07-28 16:42 ` Gustavo A. R. Silva
2019-07-28 17:14   ` Guenter Roeck
2019-07-28 17:31     ` Gustavo A. R. Silva
2019-07-28 18:12       ` Guenter Roeck
2019-07-29  8:22   ` Geert Uytterhoeven
2019-07-29 14:42     ` Gustavo A. R. Silva

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.