]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
slab.h: disable completely broken overflow handling in flex allocations
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 21 Feb 2026 23:12:09 +0000 (15:12 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 21 Feb 2026 23:12:09 +0000 (15:12 -0800)
commitfa5c82f4d2bbde10e9fd3a32aecacfe3813919ba
tree5b67eac20681c85579c4af0236c92bc32ddf31ad
parent8934827db5403eae57d4537114a9ff88b0a8460f
slab.h: disable completely broken overflow handling in flex allocations

Commit 69050f8d6d07 ("treewide: Replace kmalloc with kmalloc_obj for
non-scalar types") started using the new allocation helpers, and in the
process showed that they were completely non-working.

The overflow logic in overflows_flex_counter_type() is completely the
wrong way around, and that broke __alloc_flex() completely.  By chance,
the resulting code was then such a mess that clang generated
sufficiently garbage code that objtool warned about it all.  Which made
it somewhat quicker to narrow things down.

While fixing overflows_flex_counter_type() would presumably fix this
all, I'm excising the whole broken overflow logic from __alloc_flex(),
because we don't want that kind of code in basic allocation functions
anyway.

That (no longer) broken overflows_flex_counter_type() thing needs to be
inserted into the actual __set_flex_counter() logic in the unlikely case
that we ever want this at all.  And made conditional.

Fixes: 81cee9166a90 ("compiler_types: Introduce __flex_counter() and family")
Fixes: 69050f8d6d07 ("treewide: Replace kmalloc with kmalloc_obj for non-scalar types")
Cc: Kees Cook <kees@kernel.org>
Link: https://lore.kernel.org/all/CAHk-=whEd020BYzGTzYrENjD9Z5_82xx6h8HsQvH5xDSnv0=Hw@mail.gmail.com/
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/linux/overflow.h
include/linux/slab.h