]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
slab: turn freelist_aba_t to a struct and fully define counters there
authorVlastimil Babka <vbabka@suse.cz>
Fri, 7 Nov 2025 13:51:24 +0000 (14:51 +0100)
committerVlastimil Babka <vbabka@suse.cz>
Mon, 10 Nov 2025 14:35:21 +0000 (15:35 +0100)
commit3993ca9d6495e1e4d6fdaffc1bba0271059940c4
tree16033dc7e04f17ffcfb5bfdba411f3e3cda86326
parentb244358e9a1cd61276b8785b1b4275f1f45a1dc2
slab: turn freelist_aba_t to a struct and fully define counters there

In struct slab we currently have freelist and counters pair, where
counters itself is a union of unsigned long with a sub-struct of
several smaller fields. Then for the usage with double cmpxchg we have
freelist_aba_t that duplicates the definition of the freelist+counters
with implicitly the same layout as the full definition in struct slab.

Thanks to -fms-extension we can now move the full counters definition to
freelist_aba_t (while changing it to struct freelist_counters as a
typedef is unnecessary and discouraged) and replace the relevant part in
struct slab to an unnamed reference to it.

The immediate benefit is the removal of duplication and no longer
relying on the same layout implicitly. It also allows further cleanups
thanks to having the full definition of counters in struct
freelist_counters.

Reviewed-by: Harry Yoo <harry.yoo@oracle.com>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
mm/slab.h
mm/slub.c