{"dataType":"CVE_RECORD","cveMetadata":{"cveId":"CVE-2024-26880","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-02-19T14:20:24.185Z","datePublished":"2024-04-17T10:27:37.110Z","dateUpdated":"2026-08-05T11:28:05.183Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T11:28:05.183Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ndm: call the resume method on internal suspend\n\nThere is this reported crash when experimenting with the lvm2 testsuite.\nThe list corruption is caused by the fact that the postsuspend and resume\nmethods were not paired correctly; there were two consecutive calls to the\norigin_postsuspend function. The second call attempts to remove the\n\"hash_list\" entry from a list, while it was already removed by the first\ncall.\n\nFix __dm_internal_resume so that it calls the preresume and resume\nmethods of the table's targets.\n\nIf a preresume method of some target fails, we are in a tricky situation.\nWe can't return an error because dm_internal_resume isn't supposed to\nreturn errors. We can't return success, because then the \"resume\" and\n\"postsuspend\" methods would not be paired correctly. So, we set the\nDMF_SUSPENDED flag and we fake normal suspend - it may confuse userspace\ntools, but it won't cause a kernel crash.\n\n------------[ cut here ]------------\nkernel BUG at lib/list_debug.c:56!\ninvalid opcode: 0000 [#1] PREEMPT SMP\nCPU: 1 PID: 8343 Comm: dmsetup Not tainted 6.8.0-rc6 #4\nHardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-2 04/01/2014\nRIP: 0010:__list_del_entry_valid_or_report+0x77/0xc0\n<snip>\nRSP: 0018:ffff8881b831bcc0 EFLAGS: 00010282\nRAX: 000000000000004e RBX: ffff888143b6eb80 RCX: 0000000000000000\nRDX: 0000000000000001 RSI: ffffffff819053d0 RDI: 00000000ffffffff\nRBP: ffff8881b83a3400 R08: 00000000fffeffff R09: 0000000000000058\nR10: 0000000000000000 R11: ffffffff81a24080 R12: 0000000000000001\nR13: ffff88814538e000 R14: ffff888143bc6dc0 R15: ffffffffa02e4bb0\nFS:  00000000f7c0f780(0000) GS:ffff8893f0a40000(0000) knlGS:0000000000000000\nCS:  0010 DS: 002b ES: 002b CR0: 0000000080050033\nCR2: 0000000057fb5000 CR3: 0000000143474000 CR4: 00000000000006b0\nCall Trace:\n <TASK>\n ? die+0x2d/0x80\n ? do_trap+0xeb/0xf0\n ? __list_del_entry_valid_or_report+0x77/0xc0\n ? do_error_trap+0x60/0x80\n ? __list_del_entry_valid_or_report+0x77/0xc0\n ? exc_invalid_op+0x49/0x60\n ? __list_del_entry_valid_or_report+0x77/0xc0\n ? asm_exc_invalid_op+0x16/0x20\n ? table_deps+0x1b0/0x1b0 [dm_mod]\n ? __list_del_entry_valid_or_report+0x77/0xc0\n origin_postsuspend+0x1a/0x50 [dm_snapshot]\n dm_table_postsuspend_targets+0x34/0x50 [dm_mod]\n dm_suspend+0xd8/0xf0 [dm_mod]\n dev_suspend+0x1f2/0x2f0 [dm_mod]\n ? table_deps+0x1b0/0x1b0 [dm_mod]\n ctl_ioctl+0x300/0x5f0 [dm_mod]\n dm_compat_ctl_ioctl+0x7/0x10 [dm_mod]\n __x64_compat_sys_ioctl+0x104/0x170\n do_syscall_64+0x184/0x1b0\n entry_SYSCALL_64_after_hwframe+0x46/0x4e\nRIP: 0033:0xf7e6aead\n<snip>\n---[ end trace 0000000000000000 ]---"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The vulnerability is reached only through the device-mapper control device `/dev/mapper/control` via `DM_DEV_SUSPEND`/`DM_DEV_RESUME` ioctls (`ctl_ioctl` → `dev_suspend` → `pool_presuspend`/`pool_resume` → `dm_internal_suspend_noflush`/`dm_internal_resume`). There is no network or remote-peer input involved.\nAC:L - The attacker fully controls the entire trigger sequence with plain dmsetup ioctls — create a thin pool and a thin device whose table also carries a snapshot-origin (or cache/raid) segment, suspend and resume the pool, then suspend or remove the thin device. No race must be won and no unpredictable memory layout is required; the double `list_del()` / unbalanced `down_write()` is deterministic.\nPR:L - The dm ioctl path is administrative, but in the deployments where this matters (container runtimes using the devicemapper/thin storage driver, CSI storage plugins, privileged containers granted CAP_SYS_ADMIN, and appliances where LVM operations are delegated), the actor triggering it is a low-privileged tenant relative to the host kernel, consistent with how other device-mapper flaws in this subsystem are rated.\nUI:N - The attacker performs every step itself — table load, pool suspend/resume, device suspend/remove — through its own ioctl calls. No action by any other user or administrator is needed.\nS:U - The corruption and the resulting crash/hang are confined to the kernel's own security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - The unbalanced postsuspend/resume corrupts kernel state — a global linked list (`_dm_origins`) is operated on with stale/poisoned entries, and targets keep serving I/O with desynchronized mapping metadata (dm-cache migration state, dm-integrity journal/commit sequence, dm-snapshot origin registration), which is memory/state corruption that can be steered toward exposing kernel or foreign-volume data.\nI:H - This is a kernel list-corruption bug (double `list_del()` on `dm_origin->hash_list`), and the missing `.resume`/`.preresume` calls leave targets running with committed-but-not-reinitialized on-disk state — dm-integrity's journal is re-initialized and its autocommit timer deleted while writes continue, and dm-cache/dm-raid mapping state is left stale, permitting silent corruption of data stored on the mapped device.\nA:H - The reported failure is `kernel BUG at lib/list_debug.c:56` (invalid opcode oops) in `origin_postsuspend` reached from `dm_suspend`, taken while `_origins_lock` is write-held, so the box either panics or permanently wedges all further dm/snapshot operations. Equivalent unbalanced paths in dm-cache (`prevent_background_work` → unmatched `down_write`) and dm-raid1 (`dm_rh_stop_recovery`) produce unkillable hangs holding `md->suspend_lock`."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/md/dm.c"],"versions":[{"version":"ffcc39364160663cda1a3c358f4537302a92459b","lessThan":"69836d9329f0b4c58faaf3d886a7748ddb5bf718","status":"affected","versionType":"git"},{"version":"ffcc39364160663cda1a3c358f4537302a92459b","lessThan":"da7ece2197101b1469853e6b5e915be1e3896d52","status":"affected","versionType":"git"},{"version":"ffcc39364160663cda1a3c358f4537302a92459b","lessThan":"f89bd27709376d37ff883067193320c58a8c1d5a","status":"affected","versionType":"git"},{"version":"ffcc39364160663cda1a3c358f4537302a92459b","lessThan":"03ad5ad53e51abf3a4c7538c1bc67a5982b41dc5","status":"affected","versionType":"git"},{"version":"ffcc39364160663cda1a3c358f4537302a92459b","lessThan":"ad10289f68f45649816cc68eb93f45fd5ec48a15","status":"affected","versionType":"git"},{"version":"ffcc39364160663cda1a3c358f4537302a92459b","lessThan":"15a3fc5c8774c17589dabfe1d642d40685c985af","status":"affected","versionType":"git"},{"version":"ffcc39364160663cda1a3c358f4537302a92459b","lessThan":"ef02d8edf738557af2865c5bfb66a03c4e071be7","status":"affected","versionType":"git"},{"version":"ffcc39364160663cda1a3c358f4537302a92459b","lessThan":"360a7d1be8112654f1fb328ed3862be630bca3f4","status":"affected","versionType":"git"},{"version":"ffcc39364160663cda1a3c358f4537302a92459b","lessThan":"65e8fbde64520001abf1c8d0e573561b4746ef38","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/md/dm.c"],"versions":[{"version":"3.19","status":"affected"},{"version":"0","lessThan":"3.19","status":"unaffected","versionType":"semver"},{"version":"4.19.311","lessThanOrEqual":"4.19.*","status":"unaffected","versionType":"semver"},{"version":"5.4.273","lessThanOrEqual":"5.4.*","status":"unaffected","versionType":"semver"},{"version":"5.10.214","lessThanOrEqual":"5.10.*","status":"unaffected","versionType":"semver"},{"version":"5.15.153","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"6.1.83","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.23","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.7.11","lessThanOrEqual":"6.7.*","status":"unaffected","versionType":"semver"},{"version":"6.8.2","lessThanOrEqual":"6.8.*","status":"unaffected","versionType":"semver"},{"version":"6.9","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"4.19.311"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"5.4.273"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"5.10.214"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"5.15.153"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"6.1.83"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"6.6.23"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"6.7.11"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"6.8.2"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"6.9"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/69836d9329f0b4c58faaf3d886a7748ddb5bf718"},{"url":"https://git.kernel.org/stable/c/da7ece2197101b1469853e6b5e915be1e3896d52"},{"url":"https://git.kernel.org/stable/c/f89bd27709376d37ff883067193320c58a8c1d5a"},{"url":"https://git.kernel.org/stable/c/03ad5ad53e51abf3a4c7538c1bc67a5982b41dc5"},{"url":"https://git.kernel.org/stable/c/ad10289f68f45649816cc68eb93f45fd5ec48a15"},{"url":"https://git.kernel.org/stable/c/15a3fc5c8774c17589dabfe1d642d40685c985af"},{"url":"https://git.kernel.org/stable/c/ef02d8edf738557af2865c5bfb66a03c4e071be7"},{"url":"https://git.kernel.org/stable/c/360a7d1be8112654f1fb328ed3862be630bca3f4"},{"url":"https://git.kernel.org/stable/c/65e8fbde64520001abf1c8d0e573561b4746ef38"}],"title":"dm: call the resume method on internal suspend","x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"problemTypes":[{"descriptions":[{"type":"CWE","lang":"en","description":"CWE-noinfo Not enough information"}]}],"metrics":[{"cvssV3_1":{"scope":"UNCHANGED","version":"3.1","baseScore":6.3,"attackVector":"NETWORK","baseSeverity":"MEDIUM","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L","integrityImpact":"LOW","userInteraction":"NONE","attackComplexity":"LOW","availabilityImpact":"LOW","privilegesRequired":"LOW","confidentialityImpact":"LOW"}},{"other":{"type":"ssvc","content":{"timestamp":"2024-07-16T18:04:34.890631Z","id":"CVE-2024-26880","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2024-11-01T17:18:07.417Z"}},{"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2024-08-02T00:21:04.209Z"},"title":"CVE Program Container","references":[{"url":"https://git.kernel.org/stable/c/69836d9329f0b4c58faaf3d886a7748ddb5bf718","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/da7ece2197101b1469853e6b5e915be1e3896d52","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/f89bd27709376d37ff883067193320c58a8c1d5a","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/03ad5ad53e51abf3a4c7538c1bc67a5982b41dc5","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/ad10289f68f45649816cc68eb93f45fd5ec48a15","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/15a3fc5c8774c17589dabfe1d642d40685c985af","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/ef02d8edf738557af2865c5bfb66a03c4e071be7","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/360a7d1be8112654f1fb328ed3862be630bca3f4","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/65e8fbde64520001abf1c8d0e573561b4746ef38","tags":["x_transferred"]},{"url":"https://lists.debian.org/debian-lts-announce/2024/06/msg00017.html","tags":["x_transferred"]},{"url":"https://lists.debian.org/debian-lts-announce/2024/06/msg00020.html","tags":["x_transferred"]}]},{"x_adpType":"supplier","providerMetadata":{"orgId":"0b142b55-0307-4c5a-b3c9-f314f3fb7c5e","shortName":"siemens-SADP","dateUpdated":"2026-05-12T11:50:03.912Z"},"affected":[{"vendor":"Siemens","product":"SIMATIC S7-1500 TM MFP - GNU/Linux subsystem","versions":[{"status":"affected","version":"0","lessThan":"*","versionType":"custom"}],"defaultStatus":"unknown"},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518-4 PN/DP MFP","versions":[{"status":"affected","version":"V3.1.0","lessThan":"V3.1.5","versionType":"custom"}],"defaultStatus":"unknown"},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518-4 PN/DP MFP","versions":[{"status":"affected","version":"V3.1.0","lessThan":"V3.1.5","versionType":"custom"}],"defaultStatus":"unknown"},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP","versions":[{"status":"affected","version":"V3.1.0","lessThan":"V3.1.5","versionType":"custom"}],"defaultStatus":"unknown"},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP","versions":[{"status":"affected","version":"V3.1.0","lessThan":"V3.1.5","versionType":"custom"}],"defaultStatus":"unknown"},{"vendor":"Siemens","product":"SIPLUS S7-1500 CPU 1518-4 PN/DP MFP","versions":[{"status":"affected","version":"V3.1.0","lessThan":"V3.1.5","versionType":"custom"}],"defaultStatus":"unknown"}],"references":[{"url":"https://cert-portal.siemens.com/productcert/html/ssa-398330.html"},{"url":"https://cert-portal.siemens.com/productcert/html/ssa-265688.html"}]}]},"dataVersion":"5.2"}