{"id":"CVE-2022-50534","state":"PUBLISHED","title":"dm thin: Use last transaction's pmd->root when commit failed","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ndm thin: Use last transaction's pmd->root when commit failed\n\nRecently we found a softlock up problem in dm thin pool btree lookup\ncode due to corrupted metadata:\n\n Kernel panic - not syncing: softlockup: hung tasks\n CPU: 7 PID: 2669225 Comm: kworker/u16:3\n Hardware name: QEMU Standard PC (i440FX + PIIX, 1996)\n Workqueue: dm-thin do_worker [dm_thin_pool]\n Call Trace:\n   <IRQ>\n   dump_stack+0x9c/0xd3\n   panic+0x35d/0x6b9\n   watchdog_timer_fn.cold+0x16/0x25\n   __run_hrtimer+0xa2/0x2d0\n   </IRQ>\n   RIP: 0010:__relink_lru+0x102/0x220 [dm_bufio]\n   __bufio_new+0x11f/0x4f0 [dm_bufio]\n   new_read+0xa3/0x1e0 [dm_bufio]\n   dm_bm_read_lock+0x33/0xd0 [dm_persistent_data]\n   ro_step+0x63/0x100 [dm_persistent_data]\n   btree_lookup_raw.constprop.0+0x44/0x220 [dm_persistent_data]\n   dm_btree_lookup+0x16f/0x210 [dm_persistent_data]\n   dm_thin_find_block+0x12c/0x210 [dm_thin_pool]\n   __process_bio_read_only+0xc5/0x400 [dm_thin_pool]\n   process_thin_deferred_bios+0x1a4/0x4a0 [dm_thin_pool]\n   process_one_work+0x3c5/0x730\n\nFollowing process may generate a broken btree mixed with fresh and\nstale btree nodes, which could get dm thin trapped in an infinite loop\nwhile looking up data block:\n Transaction 1: pmd->root = A, A->B->C   // One path in btree\n                pmd->root = X, X->Y->Z   // Copy-up\n Transaction 2: X,Z is updated on disk, Y write failed.\n                // Commit failed, dm thin becomes read-only.\n                process_bio_read_only\n\t\t dm_thin_find_block\n\t\t  __find_block\n\t\t   dm_btree_lookup(pmd->root)\nThe pmd->root points to a broken btree, Y may contain stale node\npointing to any block, for example X, which gets dm thin trapped into\na dead loop while looking up Z.\n\nFix this by setting pmd->root in __open_metadata(), so that dm thin\nwill use the last transaction's pmd->root if commit failed.\n\nFetch a reproducer in [Link].\n\nLinke: https://bugzilla.kernel.org/show_bug.cgi?id=216790","publishedAt":"2025-10-07T15:19:23.958Z","updatedAt":"2026-05-11T19:21:17.171Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"991d9fa02da0dd1f843dc011376965e0c8c6c9b5","status":"affected","lessThan":"b35a22760aa5008d82533e59b0f0b5eb1b02d4e5","versionType":"git"},{"version":"991d9fa02da0dd1f843dc011376965e0c8c6c9b5","status":"affected","lessThan":"87d69b8824ca9b090f5a8ed47f758e8f6eecb871","versionType":"git"},{"version":"991d9fa02da0dd1f843dc011376965e0c8c6c9b5","status":"affected","lessThan":"3db757ffdd87ed8d7118b2250236a496502a660f","versionType":"git"},{"version":"991d9fa02da0dd1f843dc011376965e0c8c6c9b5","status":"affected","lessThan":"f758987ff0af3a4b5ee69e95cab6a5294e4367b0","versionType":"git"},{"version":"991d9fa02da0dd1f843dc011376965e0c8c6c9b5","status":"affected","lessThan":"94f01ecc2aa0be992865acc80ebb6701f731f955","versionType":"git"},{"version":"991d9fa02da0dd1f843dc011376965e0c8c6c9b5","status":"affected","lessThan":"4b710e8481ade7c9200e94d3018e99dc42a0a0e8","versionType":"git"},{"version":"991d9fa02da0dd1f843dc011376965e0c8c6c9b5","status":"affected","lessThan":"a63ce4eca86fd207e3db07c00fb7ccf4adf1b230","versionType":"git"},{"version":"991d9fa02da0dd1f843dc011376965e0c8c6c9b5","status":"affected","lessThan":"b91f481300e3a10eaf66b94fc39b740928762aaf","versionType":"git"},{"version":"991d9fa02da0dd1f843dc011376965e0c8c6c9b5","status":"affected","lessThan":"7991dbff6849f67e823b7cc0c15e5a90b0549b9f","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/md/dm-thin-metadata.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.2","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.2","versionType":"semver"},{"version":"4.9.337","status":"unaffected","lessThanOrEqual":"4.9.*","versionType":"semver"},{"version":"4.14.303","status":"unaffected","lessThanOrEqual":"4.14.*","versionType":"semver"},{"version":"4.19.270","status":"unaffected","lessThanOrEqual":"4.19.*","versionType":"semver"},{"version":"5.4.229","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.163","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.87","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.0.18","status":"unaffected","lessThanOrEqual":"6.0.*","versionType":"semver"},{"version":"6.1.4","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/md/dm-thin-metadata.c"]}],"references":["https://git.kernel.org/stable/c/b35a22760aa5008d82533e59b0f0b5eb1b02d4e5","https://git.kernel.org/stable/c/87d69b8824ca9b090f5a8ed47f758e8f6eecb871","https://git.kernel.org/stable/c/3db757ffdd87ed8d7118b2250236a496502a660f","https://git.kernel.org/stable/c/f758987ff0af3a4b5ee69e95cab6a5294e4367b0","https://git.kernel.org/stable/c/94f01ecc2aa0be992865acc80ebb6701f731f955","https://git.kernel.org/stable/c/4b710e8481ade7c9200e94d3018e99dc42a0a0e8","https://git.kernel.org/stable/c/a63ce4eca86fd207e3db07c00fb7ccf4adf1b230","https://git.kernel.org/stable/c/b91f481300e3a10eaf66b94fc39b740928762aaf","https://git.kernel.org/stable/c/7991dbff6849f67e823b7cc0c15e5a90b0549b9f"],"weaknesses":[],"ingestedAt":"2026-10-29T20:05:26.763Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2022/50xxx/CVE-2022-50534.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2022-50534","state":"PUBLISHED","datePublished":"2025-10-07T15:19:23.958Z","dateUpdated":"2026-05-11T19:21:17.171Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2025-10-07T15:15:38.665Z"},"containers":{"cna":{"title":"dm thin: Use last transaction's pmd->root when commit failed","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ndm thin: Use last transaction's pmd->root when commit failed\n\nRecently we found a softlock up problem in dm thin pool btree lookup\ncode due to corrupted metadata:\n\n Kernel panic - not syncing: softlockup: hung tasks\n CPU: 7 PID: 2669225 Comm: kworker/u16:3\n Hardware name: QEMU Standard PC (i440FX + PIIX, 1996)\n Workqueue: dm-thin do_worker [dm_thin_pool]\n Call Trace:\n   <IRQ>\n   dump_stack+0x9c/0xd3\n   panic+0x35d/0x6b9\n   watchdog_timer_fn.cold+0x16/0x25\n   __run_hrtimer+0xa2/0x2d0\n   </IRQ>\n   RIP: 0010:__relink_lru+0x102/0x220 [dm_bufio]\n   __bufio_new+0x11f/0x4f0 [dm_bufio]\n   new_read+0xa3/0x1e0 [dm_bufio]\n   dm_bm_read_lock+0x33/0xd0 [dm_persistent_data]\n   ro_step+0x63/0x100 [dm_persistent_data]\n   btree_lookup_raw.constprop.0+0x44/0x220 [dm_persistent_data]\n   dm_btree_lookup+0x16f/0x210 [dm_persistent_data]\n   dm_thin_find_block+0x12c/0x210 [dm_thin_pool]\n   __process_bio_read_only+0xc5/0x400 [dm_thin_pool]\n   process_thin_deferred_bios+0x1a4/0x4a0 [dm_thin_pool]\n   process_one_work+0x3c5/0x730\n\nFollowing process may generate a broken btree mixed with fresh and\nstale btree nodes, which could get dm thin trapped in an infinite loop\nwhile looking up data block:\n Transaction 1: pmd->root = A, A->B->C   // One path in btree\n                pmd->root = X, X->Y->Z   // Copy-up\n Transaction 2: X,Z is updated on disk, Y write failed.\n                // Commit failed, dm thin becomes read-only.\n                process_bio_read_only\n\t\t dm_thin_find_block\n\t\t  __find_block\n\t\t   dm_btree_lookup(pmd->root)\nThe pmd->root points to a broken btree, Y may contain stale node\npointing to any block, for example X, which gets dm thin trapped into\na dead loop while looking up Z.\n\nFix this by setting pmd->root in __open_metadata(), so that dm thin\nwill use the last transaction's pmd->root if commit failed.\n\nFetch a reproducer in [Link].\n\nLinke: https://bugzilla.kernel.org/show_bug.cgi?id=216790"}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"991d9fa02da0dd1f843dc011376965e0c8c6c9b5","status":"affected","lessThan":"b35a22760aa5008d82533e59b0f0b5eb1b02d4e5","versionType":"git"},{"version":"991d9fa02da0dd1f843dc011376965e0c8c6c9b5","status":"affected","lessThan":"87d69b8824ca9b090f5a8ed47f758e8f6eecb871","versionType":"git"},{"version":"991d9fa02da0dd1f843dc011376965e0c8c6c9b5","status":"affected","lessThan":"3db757ffdd87ed8d7118b2250236a496502a660f","versionType":"git"},{"version":"991d9fa02da0dd1f843dc011376965e0c8c6c9b5","status":"affected","lessThan":"f758987ff0af3a4b5ee69e95cab6a5294e4367b0","versionType":"git"},{"version":"991d9fa02da0dd1f843dc011376965e0c8c6c9b5","status":"affected","lessThan":"94f01ecc2aa0be992865acc80ebb6701f731f955","versionType":"git"},{"version":"991d9fa02da0dd1f843dc011376965e0c8c6c9b5","status":"affected","lessThan":"4b710e8481ade7c9200e94d3018e99dc42a0a0e8","versionType":"git"},{"version":"991d9fa02da0dd1f843dc011376965e0c8c6c9b5","status":"affected","lessThan":"a63ce4eca86fd207e3db07c00fb7ccf4adf1b230","versionType":"git"},{"version":"991d9fa02da0dd1f843dc011376965e0c8c6c9b5","status":"affected","lessThan":"b91f481300e3a10eaf66b94fc39b740928762aaf","versionType":"git"},{"version":"991d9fa02da0dd1f843dc011376965e0c8c6c9b5","status":"affected","lessThan":"7991dbff6849f67e823b7cc0c15e5a90b0549b9f","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/md/dm-thin-metadata.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.2","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.2","versionType":"semver"},{"version":"4.9.337","status":"unaffected","lessThanOrEqual":"4.9.*","versionType":"semver"},{"version":"4.14.303","status":"unaffected","lessThanOrEqual":"4.14.*","versionType":"semver"},{"version":"4.19.270","status":"unaffected","lessThanOrEqual":"4.19.*","versionType":"semver"},{"version":"5.4.229","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.163","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.87","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.0.18","status":"unaffected","lessThanOrEqual":"6.0.*","versionType":"semver"},{"version":"6.1.4","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/md/dm-thin-metadata.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/b35a22760aa5008d82533e59b0f0b5eb1b02d4e5"},{"url":"https://git.kernel.org/stable/c/87d69b8824ca9b090f5a8ed47f758e8f6eecb871"},{"url":"https://git.kernel.org/stable/c/3db757ffdd87ed8d7118b2250236a496502a660f"},{"url":"https://git.kernel.org/stable/c/f758987ff0af3a4b5ee69e95cab6a5294e4367b0"},{"url":"https://git.kernel.org/stable/c/94f01ecc2aa0be992865acc80ebb6701f731f955"},{"url":"https://git.kernel.org/stable/c/4b710e8481ade7c9200e94d3018e99dc42a0a0e8"},{"url":"https://git.kernel.org/stable/c/a63ce4eca86fd207e3db07c00fb7ccf4adf1b230"},{"url":"https://git.kernel.org/stable/c/b91f481300e3a10eaf66b94fc39b740928762aaf"},{"url":"https://git.kernel.org/stable/c/7991dbff6849f67e823b7cc0c15e5a90b0549b9f"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-05-11T19:21:17.171Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.2","versionEndExcluding":"4.9.337"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.2","versionEndExcluding":"4.14.303"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.2","versionEndExcluding":"4.19.270"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.2","versionEndExcluding":"5.4.229"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.2","versionEndExcluding":"5.10.163"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.2","versionEndExcluding":"5.15.87"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.2","versionEndExcluding":"6.0.18"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.2","versionEndExcluding":"6.1.4"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.2","versionEndExcluding":"6.2"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}