CVE-2022-50534

dm thin: Use last transaction's pmd->root when commit failed

MEDIUM
5.5
CVSS Score
Published: October 7, 2025 at 03:19 PM UTC
Updated: June 17, 2026 at 05:23 AM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
MEDIUM5.5
Exploit prediction
EPSS 0.2%

Description

In the Linux kernel, the following vulnerability has been resolved: dm thin: Use last transaction's pmd->root when commit failed Recently we found a softlock up problem in dm thin pool btree lookup code due to corrupted metadata: Kernel panic - not syncing: softlockup: hung tasks CPU: 7 PID: 2669225 Comm: kworker/u16:3 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996) Workqueue: dm-thin do_worker [dm_thin_pool] Call Trace: <IRQ> dump_stack+0x9c/0xd3 panic+0x35d/0x6b9 watchdog_timer_fn.cold+0x16/0x25 __run_hrtimer+0xa2/0x2d0 </IRQ> RIP: 0010:__relink_lru+0x102/0x220 [dm_bufio] __bufio_new+0x11f/0x4f0 [dm_bufio] new_read+0xa3/0x1e0 [dm_bufio] dm_bm_read_lock+0x33/0xd0 [dm_persistent_data] ro_step+0x63/0x100 [dm_persistent_data] btree_lookup_raw.constprop.0+0x44/0x220 [dm_persistent_data] dm_btree_lookup+0x16f/0x210 [dm_persistent_data] dm_thin_find_block+0x12c/0x210 [dm_thin_pool] __process_bio_read_only+0xc5/0x400 [dm_thin_pool] process_thin_deferred_bios+0x1a4/0x4a0 [dm_thin_pool] process_one_work+0x3c5/0x730 Following process may generate a broken btree mixed with fresh and stale btree nodes, which could get dm thin trapped in an infinite loop while looking up data block: Transaction 1: pmd->root = A, A->B->C // One path in btree pmd->root = X, X->Y->Z // Copy-up Transaction 2: X,Z is updated on disk, Y write failed. // Commit failed, dm thin becomes read-only. process_bio_read_only dm_thin_find_block __find_block dm_btree_lookup(pmd->root) The pmd->root points to a broken btree, Y may contain stale node pointing to any block, for example X, which gets dm thin trapped into a dead loop while looking up Z. Fix this by setting pmd->root in __open_metadata(), so that dm thin will use the last transaction's pmd->root if commit failed. Fetch a reproducer in [Link]. Linke: https://bugzilla.kernel.org/show_bug.cgi?id=216790

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

3.2 ≤ v < 4.14.3033.2 ≤ v < 4.19.2703.2 ≤ v < 4.9.3373.2 ≤ v < 5.10.1633.2 ≤ v < 5.15.873.2 ≤ v < 5.4.2293.2 ≤ v < 6.0.183.2 ≤ v < 6.1.43.2 ≤ v < 6.24.10 ≤ v < 4.14.3034.15 ≤ v < 4.19.2704.20 ≤ v < 5.4.2295.11 ≤ v < 5.15.875.16 ≤ v < 6.0.185.5 ≤ v < 5.10.1636.1 ≤ v < 6.1.43.2991d9fa02da0dd1f843dc011376965e0c8c6c9b5
Vendor states this is fixed in 3db757ffdd87ed8d7118b2250236a496502a660f (fixed)
Vendor states this is fixed in 4b710e8481ade7c9200e94d3018e99dc42a0a0e8 (fixed)
Vendor states this is fixed in 7991dbff6849f67e823b7cc0c15e5a90b0549b9f (fixed)
Vendor states this is fixed in 87d69b8824ca9b090f5a8ed47f758e8f6eecb871 (fixed)
Vendor states this is fixed in 94f01ecc2aa0be992865acc80ebb6701f731f955 (fixed)
Vendor states this is fixed in a63ce4eca86fd207e3db07c00fb7ccf4adf1b230 (fixed)
Vendor states this is fixed in b35a22760aa5008d82533e59b0f0b5eb1b02d4e5 (fixed)
Vendor states this is fixed in b91f481300e3a10eaf66b94fc39b740928762aaf (fixed)
Vendor states this is fixed in f758987ff0af3a4b5ee69e95cab6a5294e4367b0 (fixed)
Vendor states this is fixed in 3.2 (unaffected)
Vendor states this is fixed in 4.14.303 (unaffected)
Vendor states this is fixed in 4.19.270 (unaffected)
Vendor states this is fixed in 4.9.337 (unaffected)
Vendor states this is fixed in 5.10.163 (unaffected)
Vendor states this is fixed in 5.15.87 (unaffected)
Vendor states this is fixed in 5.4.229 (unaffected)
Vendor states this is fixed in 6.0.18 (unaffected)
Vendor states this is fixed in 6.1.4 (unaffected)
Vendor states this is fixed in 6.2 (unaffected)

CVSS

Attack Vector
LOCAL
Complexity
LOW
Privileges
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
NONE
Integrity
NONE
Availability
HIGH
Vector?

Quick Info

StatusANALYZED
CWE
NVD-CWE-noinfo

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card