Hi, On Wed, Apr 1, 2026 at 10:38 PM Peter Zijlstra <[email protected]> wrote: > > On Wed, Apr 01, 2026 at 01:52:26PM -0700, Kees Cook wrote: > > > (Though I would note that GCC does _not_ refuse the jump when there is a > > cleanup; it only see the other two uninitialized values.) > > Yeah.. I know, but since we also build with clang, any such issue will > get discovered. > > > So that makes it not totally broken, but it does make it a bit fragile. > > Right. > > > Another concern I have is dealing with older compilers and how to > > "hide" the label and its code. e.g. if I remove the "goto" from above: > > > > ../drivers/misc/lkdtm/bugs.c:1060:1: warning: label 'weird' defined but not > > used [-Wunused-label] > > 1060 | weird: > > | ^~~~~ > > > > Oddly, the unreachable code isn't a problem, so we could just wrap the > > label is some macro like: > > > > #define force_label(x) if (0) goto x; x > > > > force_label(weird): > > pr_info("value: %lu\n", value); > > pr_info("outcome: %zu\n", outcome); > > > > __maybe_unused also works on labels. Like: > > __overflow: __maybe_unused > dead-code-here; > >
Completing the loop: Here's the Clang RFC discussing obt label handler design [1] [1]: https://discourse.llvm.org/t/rfc-linux-kernel-discusses-overflowbehaviortypes/90486 Jusin

