Messages in this thread | | | From | Nick Desaulniers <> | Date | Mon, 23 Nov 2020 17:32:51 -0800 | Subject | Re: [PATCH 000/141] Fix fall-through warnings for Clang |
| |
On Sun, Nov 22, 2020 at 8:17 AM Kees Cook <keescook@chromium.org> wrote: > > On Fri, Nov 20, 2020 at 11:51:42AM -0800, Jakub Kicinski wrote: > > If none of the 140 patches here fix a real bug, and there is no change > > to machine code then it sounds to me like a W=2 kind of a warning. > > FWIW, this series has found at least one bug so far: > https://lore.kernel.org/lkml/CAFCwf11izHF=g1mGry1fE5kvFFFrxzhPSM6qKAO8gxSp=Kr_CQ@mail.gmail.com/
So looks like the bulk of these are: switch (x) { case 0: ++x; default: break; }
I have a patch that fixes those up for clang: https://reviews.llvm.org/D91895
There's 3 other cases that don't quite match between GCC and Clang I observe in the kernel: switch (x) { case 0: ++x; default: goto y; } y:;
switch (x) { case 0: ++x; default: return; }
switch (x) { case 0: ++x; default: ; }
Based on your link, and Nathan's comment on my patch, maybe Clang should continue to warn for the above (at least the `default: return;` case) and GCC should change? While the last case looks harmless, there were only 1 or 2 across the tree in my limited configuration testing; I really think we should just add `break`s for those. -- Thanks, ~Nick Desaulniers
| |