In the Linux kernel, the following vulnerability has been resolved:
mm, slub: do not call doslabfree for kfence object
In 782f8906f805 the freeing of kfence objects was moved from deep inside doslabfree to the wrapper functions outside. This is a nice change, but unfortunately it missed one spot in _kmemcachefreebulk.
This results in a crash like this:
BUG skbuffheadcache (Tainted: G S B E ): Padding overwritten. 0xffff88907fea0f00-0xffff88907fea0fff @offset=3840
slaberr (mm/slub.c:1129) freetopartiallist (mm/slub.c:? mm/slub.c:4036) slabpadcheck (mm/slub.c:864 mm/slub.c:1290) checkslab (mm/slub.c:?) freetopartiallist (mm/slub.c:3171 mm/slub.c:4036) kmemcacheallocbulk (mm/slub.c:? mm/slub.c:4495 mm/slub.c:4586 mm/slub.c:4635) napibuild_skb (net/core/skbuff.c:348 net/core/skbuff.c:527 net/core/skbuff.c:549)
All the other callers to doslabfree appear to be ok.
Add a kfencefree check in _kmemcachefree_bulk to avoid the crash.
{ "vanir_signatures": [ { "signature_version": "v1", "target": { "file": "mm/slub.c" }, "signature_type": "Line", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a371d558e6f3aed977a8a7346350557de5d25190", "deprecated": false, "digest": { "line_hashes": [ "313962731866920444231132140212047270061", "119820150823630960250499902687824590621", "248225784813638780709339266791010191600" ], "threshold": 0.9 }, "id": "CVE-2024-44973-283c2dbf" }, { "signature_version": "v1", "target": { "function": "__kmem_cache_free_bulk", "file": "mm/slub.c" }, "signature_type": "Function", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a371d558e6f3aed977a8a7346350557de5d25190", "deprecated": false, "digest": { "length": 326.0, "function_hash": "11416989238723569750487132065917155946" }, "id": "CVE-2024-44973-37fc57e9" }, { "signature_version": "v1", "target": { "file": "mm/slub.c" }, "signature_type": "Line", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b35cd7f1e969aaa63e6716d82480f6b8a3230949", "deprecated": false, "digest": { "line_hashes": [ "313962731866920444231132140212047270061", "119820150823630960250499902687824590621", "248225784813638780709339266791010191600" ], "threshold": 0.9 }, "id": "CVE-2024-44973-4df90a06" }, { "signature_version": "v1", "target": { "function": "__kmem_cache_free_bulk", "file": "mm/slub.c" }, "signature_type": "Function", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b35cd7f1e969aaa63e6716d82480f6b8a3230949", "deprecated": false, "digest": { "length": 326.0, "function_hash": "11416989238723569750487132065917155946" }, "id": "CVE-2024-44973-f074444d" } ] }