]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
hexagon: Add __attribute_const__ to ffs()-family implementations
authorKees Cook <kees@kernel.org>
Mon, 4 Aug 2025 16:44:04 +0000 (09:44 -0700)
committerKees Cook <kees@kernel.org>
Mon, 8 Sep 2025 21:58:51 +0000 (14:58 -0700)
commit799776f3360d7505be25adb0d06e28b183c8ad70
tree1d014bd63d2de75be194e81a9a58c2ed6ab6c7e9
parenta8d060ddeed52b4e4d0264b34353f025c421e4b9
hexagon: Add __attribute_const__ to ffs()-family implementations

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 Hexagon's implementations
of fls(), ffs(), __ffs(), __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=hexagon defconfig with Clang 21.0.0git (LLVM=1).

Link: https://github.com/KSPP/linux/issues/364
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20250804164417.1612371-8-kees@kernel.org
Signed-off-by: Kees Cook <kees@kernel.org>
arch/hexagon/include/asm/bitops.h