CVE-2022-50549
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
07/10/2025
Last modified:
08/10/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
dm thin: Fix ABBA deadlock between shrink_slab and dm_pool_abort_metadata<br />
<br />
Following concurrent processes:<br />
<br />
P1(drop cache) P2(kworker)<br />
drop_caches_sysctl_handler<br />
drop_slab<br />
shrink_slab<br />
down_read(&shrinker_rwsem) - LOCK A<br />
do_shrink_slab<br />
super_cache_scan<br />
prune_icache_sb<br />
dispose_list<br />
evict<br />
ext4_evict_inode<br />
ext4_clear_inode<br />
ext4_discard_preallocations<br />
ext4_mb_load_buddy_gfp<br />
ext4_mb_init_cache<br />
ext4_read_block_bitmap_nowait<br />
ext4_read_bh_nowait<br />
submit_bh<br />
dm_submit_bio<br />
do_worker<br />
process_deferred_bios<br />
commit<br />
metadata_operation_failed<br />
dm_pool_abort_metadata<br />
down_write(&pmd->root_lock) - LOCK B<br />
__destroy_persistent_data_objects<br />
dm_block_manager_destroy<br />
dm_bufio_client_destroy<br />
unregister_shrinker<br />
down_write(&shrinker_rwsem)<br />
thin_map |<br />
dm_thin_find_block ↓<br />
down_read(&pmd->root_lock) --> ABBA deadlock<br />
<br />
, which triggers hung task:<br />
<br />
[ 76.974820] INFO: task kworker/u4:3:63 blocked for more than 15 seconds.<br />
[ 76.976019] Not tainted 6.1.0-rc4-00011-g8f17dd350364-dirty #910<br />
[ 76.978521] task:kworker/u4:3 state:D stack:0 pid:63 ppid:2<br />
[ 76.978534] Workqueue: dm-thin do_worker<br />
[ 76.978552] Call Trace:<br />
[ 76.978564] __schedule+0x6ba/0x10f0<br />
[ 76.978582] schedule+0x9d/0x1e0<br />
[ 76.978588] rwsem_down_write_slowpath+0x587/0xdf0<br />
[ 76.978600] down_write+0xec/0x110<br />
[ 76.978607] unregister_shrinker+0x2c/0xf0<br />
[ 76.978616] dm_bufio_client_destroy+0x116/0x3d0<br />
[ 76.978625] dm_block_manager_destroy+0x19/0x40<br />
[ 76.978629] __destroy_persistent_data_objects+0x5e/0x70<br />
[ 76.978636] dm_pool_abort_metadata+0x8e/0x100<br />
[ 76.978643] metadata_operation_failed+0x86/0x110<br />
[ 76.978649] commit+0x6a/0x230<br />
[ 76.978655] do_worker+0xc6e/0xd90<br />
[ 76.978702] process_one_work+0x269/0x630<br />
[ 76.978714] worker_thread+0x266/0x630<br />
[ 76.978730] kthread+0x151/0x1b0<br />
[ 76.978772] INFO: task test.sh:2646 blocked for more than 15 seconds.<br />
[ 76.979756] Not tainted 6.1.0-rc4-00011-g8f17dd350364-dirty #910<br />
[ 76.982111] task:test.sh state:D stack:0 pid:2646 ppid:2459<br />
[ 76.982128] Call Trace:<br />
[ 76.982139] __schedule+0x6ba/0x10f0<br />
[ 76.982155] schedule+0x9d/0x1e0<br />
[ 76.982159] rwsem_down_read_slowpath+0x4f4/0x910<br />
[ 76.982173] down_read+0x84/0x170<br />
[ 76.982177] dm_thin_find_block+0x4c/0xd0<br />
[ 76.982183] thin_map+0x201/0x3d0<br />
[ 76.982188] __map_bio+0x5b/0x350<br />
[ 76.982195] dm_submit_bio+0x2b6/0x930<br />
[ 76.982202] __submit_bio+0x123/0x2d0<br />
[ 76.982209] submit_bio_noacct_nocheck+0x101/0x3e0<br />
[ 76.982222] submit_bio_noacct+0x389/0x770<br />
[ 76.982227] submit_bio+0x50/0xc0<br />
[ 76.982232] submit_bh_wbc+0x15e/0x230<br />
[ 76.982238] submit_bh+0x14/0x20<br />
[ 76.982241] ext4_read_bh_nowait+0xc5/0x130<br />
[ 76.982247] ext4_read_block_bitmap_nowait+0x340/0xc60<br />
[ 76.982254] ext4_mb_init_cache+0x1ce/0xdc0<br />
[ 76.982259] ext4_mb_load_buddy_gfp+0x987/0xfa0<br />
[ 76.982263] ext4_discard_preallocations+0x45d/0x830<br />
[ 76.982274] ext4_clear_inode+0x48/0xf0<br />
[ 76.982280] ext4_evict_inode+0xcf/0xc70<br />
[ 76.982285] evict+0x119/0x2b0<br />
[ 76.982290] dispose_list+0x43/0xa0<br />
[ 76.982294] prune_icache_sb+0x64/0x90<br />
[ 76.982298] super_cache_scan+0x155/0x210<br />
[ 76.982303] do_shrink_slab+0x19e/0x4e0<br />
[ 76.982310] shrink_slab+0x2bd/0x450<br />
[ 76.982317] drop_slab+0xcc/0x1a0<br />
[ 76.982323] drop_caches_sysctl_handler+0xb7/0xe0<br />
[ 76.982327] proc_sys_call_handler+0x1bc/0x300<br />
[ 76.982331] proc_sys_write+0x17/0x20<br />
[ 76.982334] vfs_write+0x3d3/0x570<br />
[ 76.982342] ksys_write+0x73/0x160<br />
[ 76.982347] __x64_sys_write+0x1e/0x30<br />
[ 76.982352] do_syscall_64+0x35/0x80<br />
[ 76.982357] entry_SYSCALL_64_after_hwframe+0x63/0xcd<br />
<br />
Funct<br />
---truncated---
Impact
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/200aa33b5d781e7c0fa6c0c7db9dbcc3f574ce8f
- https://git.kernel.org/stable/c/2d891cc5a1706b6908bceb56af7176a463ee6d62
- https://git.kernel.org/stable/c/7e37578069737b04955c71dd85db8a3bc2709eff
- https://git.kernel.org/stable/c/8111964f1b8524c4bb56b02cd9c7a37725ea21fd
- https://git.kernel.org/stable/c/cdf7a39bcc427febbfe3c3b9fe829825ead96c27
- https://git.kernel.org/stable/c/f8c26c33fef588ee54852cffa7cbb9f9d9869405



