CVE-2024-56566

Source
https://nvd.nist.gov/vuln/detail/CVE-2024-56566
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2024-56566.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2024-56566
Downstream
Related
Published
2024-12-27T14:23:10.178Z
Modified
2025-11-28T02:34:26.655321Z
Summary
mm/slub: Avoid list corruption when removing a slab from the full list
Details

In the Linux kernel, the following vulnerability has been resolved:

mm/slub: Avoid list corruption when removing a slab from the full list

Boot with slub_debug=UFPZ.

If allocated object failed in allocconsistencychecks, all objects of the slab will be marked as used, and then the slab will be removed from the partial list.

When an object belonging to the slab got freed later, the remove_full() function is called. Because the slab is neither on the partial list nor on the full list, it eventually lead to a list corruption (actually a list poison being detected).

So we need to mark and isolate the slab page with metadata corruption, do not put it back in circulation.

Because the debug caches avoid all the fastpaths, reusing the frozen bit to mark slab page with metadata corruption seems to be fine.

[ 4277.385669] listdel corruption, ffffea00044b3e50->next is LISTPOISON1 (dead000000000100) [ 4277.387023] ------------[ cut here ]------------ [ 4277.387880] kernel BUG at lib/listdebug.c:56! [ 4277.388680] invalid opcode: 0000 [#1] PREEMPT SMP PTI [ 4277.389562] CPU: 5 PID: 90 Comm: kworker/5:1 Kdump: loaded Tainted: G OE 6.6.1-1 #1 [ 4277.392113] Workqueue: xfs-inodegc/vda1 xfsinodegcworker [xfs] [ 4277.393551] RIP: 0010:listdelentryvalidorreport+0x7b/0xc0 [ 4277.394518] Code: 48 91 82 e8 37 f9 9a ff 0f 0b 48 89 fe 48 c7 c7 28 49 91 82 e8 26 f9 9a ff 0f 0b 48 89 fe 48 c7 c7 58 49 91 [ 4277.397292] RSP: 0018:ffffc90000333b38 EFLAGS: 00010082 [ 4277.398202] RAX: 000000000000004e RBX: ffffea00044b3e50 RCX: 0000000000000000 [ 4277.399340] RDX: 0000000000000002 RSI: ffffffff828f8715 RDI: 00000000ffffffff [ 4277.400545] RBP: ffffea00044b3e40 R08: 0000000000000000 R09: ffffc900003339f0 [ 4277.401710] R10: 0000000000000003 R11: ffffffff82d44088 R12: ffff888112cf9910 [ 4277.402887] R13: 0000000000000001 R14: 0000000000000001 R15: ffff8881000424c0 [ 4277.404049] FS: 0000000000000000(0000) GS:ffff88842fd40000(0000) knlGS:0000000000000000 [ 4277.405357] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 4277.406389] CR2: 00007f2ad0b24000 CR3: 0000000102a3a006 CR4: 00000000007706e0 [ 4277.407589] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 4277.408780] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 4277.410000] PKRU: 55555554 [ 4277.410645] Call Trace: [ 4277.411234] <TASK> [ 4277.411777] ? die+0x32/0x80 [ 4277.412439] ? dotrap+0xd6/0x100 [ 4277.413150] ? _listdelentryvalidorreport+0x7b/0xc0 [ 4277.414158] ? doerrortrap+0x6a/0x90 [ 4277.414948] ? _listdelentryvalidorreport+0x7b/0xc0 [ 4277.415915] ? excinvalidop+0x4c/0x60 [ 4277.416710] ? _listdelentryvalidorreport+0x7b/0xc0 [ 4277.417675] ? asmexcinvalidop+0x16/0x20 [ 4277.418482] ? _listdelentryvalidorreport+0x7b/0xc0 [ 4277.419466] ? _listdelentryvalidorreport+0x7b/0xc0 [ 4277.420410] freetopartiallist+0x515/0x5e0 [ 4277.421242] ? xfsiextremove+0x41a/0xa10 [xfs] [ 4277.422298] xfsiextremove+0x41a/0xa10 [xfs] [ 4277.423316] ? xfsinodegcworker+0xb4/0x1a0 [xfs] [ 4277.424383] xfsbmapdelextentdelay+0x4fe/0x7d0 [xfs] [ 4277.425490] _xfsbunmapi+0x50d/0x840 [xfs] [ 4277.426445] xfsitruncateextentsflags+0x13a/0x490 [xfs] [ 4277.427553] xfsinactivetruncate+0xa3/0x120 [xfs] [ 4277.428567] xfsinactive+0x22d/0x290 [xfs] [ 4277.429500] xfsinodegcworker+0xb4/0x1a0 [xfs] [ 4277.430479] processonework+0x171/0x340 [ 4277.431227] workerthread+0x277/0x390 [ 4277.431962] ? _pfxworkerthread+0x10/0x10 [ 4277.432752] kthread+0xf0/0x120 [ 4277.433382] ? _pfxkthread+0x10/0x10 [ 4277.434134] retfromfork+0x2d/0x50 [ 4277.434837] ? _pfxkthread+0x10/0x10 [ 4277.435566] retfromforkasm+0x1b/0x30 [ 4277.436280] </TASK>

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/56xxx/CVE-2024-56566.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
643b113849d8faa68c9f01c3c9d929bfbffd50bd
Fixed
33a213c04faff6c3a7fe77e947db81bc7270fe32
Fixed
943c0f601cd28c1073b92b5f944c6c6c2643e709
Fixed
dbc16915279a548a204154368da23d402c141c81

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
2.6.22
Fixed
6.6.64
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.4