CVE-2024-26880CWE-476

CVE-2024-26880

High · published April 17, 2024

CVSS v3.1
7.8
EPSS
1%
Percentile
53.2
In the wild
Unconfirmed
What it is

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

dm: call the resume method on internal suspend

There is this reported crash when experimenting with the lvm2 testsuite.

The list corruption is caused by the fact that the postsuspend and resume

methods were not paired correctly; there were two consecutive calls to the

origin_postsuspend function. The second call attempts to remove the

"hash_list" entry from a list, while it was already removed by the first

call.

Fix __dm_internal_resume so that it calls the preresume and resume

methods of the table's targets.

If a preresume method of some target fails, we are in a tricky situation.

We can't return an error because dm_internal_resume isn't supposed to

return errors. We can't return success, because then the "resume" and

"postsuspend" methods would not be paired correctly. So, we set the

DMF_SUSPENDED flag and we fake normal suspend - it may confuse userspace

tools, but it won't cause a kernel crash.

------------[ cut here ]------------

kernel BUG at lib/list_debug.c:56!

invalid opcode: 0000 [#1] PREEMPT SMP

CPU: 1 PID: 8343 Comm: dmsetup Not tainted 6.8.0-rc6 #4

Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-2 04/01/2014

RIP: 0010:__list_del_entry_valid_or_report+0x77/0xc0

<snip>

RSP: 0018:ffff8881b831bcc0 EFLAGS: 00010282

RAX: 000000000000004e RBX: ffff888143b6eb80 RCX: 0000000000000000

RDX: 0000000000000001 RSI: ffffffff819053d0 RDI: 00000000ffffffff

RBP: ffff8881b83a3400 R08: 00000000fffeffff R09: 0000000000000058

R10: 0000000000000000 R11: ffffffff81a24080 R12: 0000000000000001

R13: ffff88814538e000 R14: ffff888143bc6dc0 R15: ffffffffa02e4bb0

FS: 00000000f7c0f780(0000) GS:ffff8893f0a40000(0000) knlGS:0000000000000000

CS: 0010 DS: 002b ES: 002b CR0: 0000000080050033

CR2: 0000000057fb5000 CR3: 0000000143474000 CR4: 00000000000006b0

Call Trace:

<TASK>

? die+0x2d/0x80

? do_trap+0xeb/0xf0

? __list_del_entry_valid_or_report+0x77/0xc0

? do_error_trap+0x60/0x80

? __list_del_entry_valid_or_report+0x77/0xc0

? exc_invalid_op+0x49/0x60

? __list_del_entry_valid_or_report+0x77/0xc0

? asm_exc_invalid_op+0x16/0x20

? table_deps+0x1b0/0x1b0 [dm_mod]

? __list_del_entry_valid_or_report+0x77/0xc0

origin_postsuspend+0x1a/0x50 [dm_snapshot]

dm_table_postsuspend_targets+0x34/0x50 [dm_mod]

dm_suspend+0xd8/0xf0 [dm_mod]

dev_suspend+0x1f2/0x2f0 [dm_mod]

? table_deps+0x1b0/0x1b0 [dm_mod]

ctl_ioctl+0x300/0x5f0 [dm_mod]

dm_compat_ctl_ioctl+0x7/0x10 [dm_mod]

__x64_compat_sys_ioctl+0x104/0x170

do_syscall_64+0x184/0x1b0

entry_SYSCALL_64_after_hwframe+0x46/0x4e

RIP: 0033:0xf7e6aead

<snip>

---[ end trace 0000000000000000 ]---

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00716 · 53.2th percentile
Weakness
CWE-476 · NULL Pointer Dereference
Published
2024-04-17T15:15Z
Affected products (9)
ProductVersionsFixed in
linux/linux_kernel≥ 3.19, < 4.19.3114.19.311
linux/linux_kernel≥ 4.20, < 5.4.2735.4.273
linux/linux_kernel≥ 5.5, < 5.10.2145.10.214
linux/linux_kernel≥ 5.11, < 5.15.1535.15.153
linux/linux_kernel≥ 5.16, < 6.1.836.1.83
linux/linux_kernel≥ 6.2, < 6.6.236.6.23
linux/linux_kernel≥ 6.7, < 6.7.116.7.11
linux/linux_kernel≥ 6.8, < 6.8.26.8.2
debian/debian_linuxall versions—
References (22)
https://git.kernel.org/stable/c/03ad5ad53e51abf3a4c7538c1bc67a5982b41dc5 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/15a3fc5c8774c17589dabfe1d642d40685c985af · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/360a7d1be8112654f1fb328ed3862be630bca3f4 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/65e8fbde64520001abf1c8d0e573561b4746ef38 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/69836d9329f0b4c58faaf3d886a7748ddb5bf718 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/ad10289f68f45649816cc68eb93f45fd5ec48a15 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/da7ece2197101b1469853e6b5e915be1e3896d52 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/ef02d8edf738557af2865c5bfb66a03c4e071be7 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/f89bd27709376d37ff883067193320c58a8c1d5a · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/03ad5ad53e51abf3a4c7538c1bc67a5982b41dc5 · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/15a3fc5c8774c17589dabfe1d642d40685c985af · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/360a7d1be8112654f1fb328ed3862be630bca3f4 · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/65e8fbde64520001abf1c8d0e573561b4746ef38 · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/69836d9329f0b4c58faaf3d886a7748ddb5bf718 · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/ad10289f68f45649816cc68eb93f45fd5ec48a15 · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/da7ece2197101b1469853e6b5e915be1e3896d52 · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/ef02d8edf738557af2865c5bfb66a03c4e071be7 · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/f89bd27709376d37ff883067193320c58a8c1d5a · af854a3a-2127-422b-91ae-364da2661108https://lists.debian.org/debian-lts-announce/2024/06/msg00017.html · af854a3a-2127-422b-91ae-364da2661108https://lists.debian.org/debian-lts-announce/2024/06/msg00020.html · af854a3a-2127-422b-91ae-364da2661108https://cert-portal.siemens.com/productcert/html/ssa-265688.html · 0b142b55-0307-4c5a-b3c9-f314f3fb7c5ehttps://cert-portal.siemens.com/productcert/html/ssa-398330.html · 0b142b55-0307-4c5a-b3c9-f314f3fb7c5e
EPSS history
Timeline
  • 17 APR 10:27Z
    dm: call the resume method on internal suspend
    cvelistv5