CVE-2024-56592 in Linux
摘要
由 VulDB • 2026-05-30
在 Linux 内核中,已修复以下漏洞:
bpf:在 htab_unlock_bucket() 之后调用 free_htab_elem()
对于映射(maps)的哈希表(htab),当映射从 htab 中移除时,它可能持有该映射的最后一个引用。bpf_map_fd_put_ptr() 将调用 bpf_map_free_id() 以释放被移除映射元素的 ID。然而,bpf_map_fd_put_ptr() 是在持有桶锁(raw_spin_lock_t)的情况下被调用的,而 bpf_map_free_id() 试图获取 map_idr_lock(spinlock_t),从而触发以下 lockdep 警告:
============================= [ BUG: Invalid wait context ]
6.11.0-rc4+ #49 Not tainted ----------------------------- test_maps/4881 正在尝试锁定: ffffffff84884578 (map_idr_lock){+...}-{3:3}, 位于:bpf_map_free_id.part.0+0x21/0x70
可能有助于调试的其他信息: context-{5:5}
test_maps/4881 持有的 2 个锁: #0: ffffffff846caf60 (rcu_read_lock){....}-{1:3}, 位于:bpf_fd_htab_map_update_elem+0xf9/0x270
#1: ffff888149ced148 (&htab->lockdep_key#2){....}-{2:2}, 位于:htab_map_update_elem+0x178/0xa80
堆栈回溯: CPU: 0 UID: 0 PID: 4881 Comm: test_maps Not tainted 6.11.0-rc4+ #49 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 Call Trace: <TASK> dump_stack_lvl+0x59/0x80 dump_stack+0x10/0x18 __lock_acquire+0x1338/0x23a0 lock_acquire+0x119/0x3a0 _raw_spin_lock+0x45/0x60 x64_sys_bpf+0x45/0x60 x64_sys_call+0x1b2a/0x20d0 do_syscall_64+0x5d/0x100 entry_SYSCALL_64_after_hwframe+0x76/0x7e
If you want to get best quality of vulnerability data, you may have to visit VulDB.