aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2024-08-05 09:23:00 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2024-08-05 09:23:00 -0700
commitc813111d19e65b6336a6352eae9c1ff5c40f722f (patch)
tree0cede8a92ece4c22ecc4c9c4149748fa6ea0e604
parentLinux 6.11-rc2 (diff)
parentmm, slub: do not call do_slab_free for kfence object (diff)
downloadwireguard-linux-c813111d19e65b6336a6352eae9c1ff5c40f722f.tar.xz
wireguard-linux-c813111d19e65b6336a6352eae9c1ff5c40f722f.zip
Merge tag 'slab-fixes-for-6.11-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab
Pull slab fix from Vlastimil Babka: "Since v6.8 we've had a subtle breakage in SLUB with KFENCE enabled, that can cause a crash. It hasn't been found earlier due to quite specific conditions necessary (OOM during kmem_cache_alloc_bulk())" * tag 'slab-fixes-for-6.11-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab: mm, slub: do not call do_slab_free for kfence object
Diffstat (limited to '')
-rw-r--r--mm/slub.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/mm/slub.c b/mm/slub.c
index 3520acaf9afa..c9d8a2497fd6 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -4690,6 +4690,9 @@ static void __kmem_cache_free_bulk(struct kmem_cache *s, size_t size, void **p)
if (!df.slab)
continue;
+ if (kfence_free(df.freelist))
+ continue;
+
do_slab_free(df.s, df.slab, df.freelist, df.tail, df.cnt,
_RET_IP_);
} while (likely(size));