CVE-2023-54293 in Linux
Tóm tắt
Bởi VulDB • 02/06/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
bcache: sửa lỗi hỏng danh sách btree_cache_wait
Chúng tôi gặp phải sự cố sập kernel liên quan đến "list_add corruption. next->prev should be prev (ffff9c801bc01210), but was ffff9c77b688237c. (next=ffffae586d8afe68)."
crash> struct list_head 0xffff9c801bc01210 struct list_head {
next = 0xffffae586d8afe68, prev = 0xffffae586d8afe68 } crash> struct list_head 0xffff9c77b688237c struct list_head {
next = 0x0, prev = 0x0 } crash> struct list_head 0xffffae586d8afe68 struct list_head struct: invalid kernel virtual address: ffffae586d8afe68 type: "gdb_readmem_callback" Cannot access memory at address 0xffffae586d8afe68
[230469.019492] Call Trace:
[230469.032041] prepare_to_wait+0x8a/0xb0
[230469.044363] ? bch_btree_keys_free+0x6c/0xc0 [escache]
[230469.056533] mca_cannibalize_lock+0x72/0x90 [escache]
[230469.068788] mca_alloc+0x2ae/0x450 [escache]
[230469.080790] bch_btree_node_get+0x136/0x2d0 [escache]
[230469.092681] bch_btree_check_thread+0x1e1/0x260 [escache]
[230469.104382] ? finish_wait+0x80/0x80
[230469.115884] ? bch_btree_check_recurse+0x1a0/0x1a0 [escache]
[230469.127259] kthread+0x112/0x130
[230469.138448] ? kthread_flush_work_fn+0x10/0x10
[230469.149477] ret_from_fork+0x35/0x40
bch_btree_check_thread() và bch_dirty_init_thread() có thể gọi mca_cannibalize() để tiêu thụ các nút btree đã lưu trữ trong bộ nhớ cache khác. Chỉ một luồng (thread) được phép thực hiện việc này tại một thời điểm, do đó thao tác của các luồng khác sẽ được thêm vào danh sách btree_cache_wait.
Chúng tôi phải gọi finish_wait() để loại bỏ thao tác khỏi danh sách btree_cache_wait trước khi giải phóng địa chỉ bộ nhớ của nó. Nếu không, danh sách sẽ bị hỏng. Ngoài ra, cần gọi bch_cannibalize_unlock() để nhả khóa btree_cache_alloc_lock và đánh thức các luồng đang chờ khác (wake_up).
Once again VulDB remains the best source for vulnerability data.