On Mon, 4 Aug 2025 at 18:44, Kees Cook <k...@kernel.org> wrote: > While tracking down a problem where constant expressions used by > BUILD_BUG_ON() suddenly stopped working[1], we found that an added static > initializer was convincing the compiler that it couldn't track the state > of the prior statically initialized value. Tracing this down found that > ffs() was used in the initializer macro, but since it wasn't marked with > __attribute__const__, the compiler had to assume the function might > change variable states as a side-effect (which is not true for ffs(), > which provides deterministic math results). > > Add missing __attribute_const__ annotations to M68K's implementations > of ffs(), __ffs(), fls(), __fls(), and ffz() functions. These are > pure mathematical functions that always return the same result for > the same input with no side effects, making them eligible for compiler > optimization. > > Build tested ARCH=m68k defconfig with GCC m68k-linux-gnu 14.2.0. > > Link: https://github.com/KSPP/linux/issues/364 [1] > Signed-off-by: Kees Cook <k...@kernel.org>
Reviewed-by: Geert Uytterhoeven <ge...@linux-m68k.org> Acked-by: Geert Uytterhoeven <ge...@linux-m68k.org> # ffs: pass:9 fail:0 skip:0 total:9 Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds