CVE-2024-38306 in Linux
Tóm tắt
Bởi VulDB • 23/06/2026
Trong kernel Linux, lỗ hổng bảo mật sau đây đã được khắc phục:
btrfs: bảo vệ folio::private khi gắn các folio của extent buffer
[BUG]
Kể từ phiên bản v6.8, có những báo cáo về lỗi sập nhân (kernel crashes) hiếm gặp từ nhiều người dùng khác nhau; yếu tố chung là các thông báo lỗi trạng thái trang không hợp lệ như sau:
BUG: Bad page state in process kswapd0 pfn:d6e840 page: refcount:0 mapcount:0 mapping:000000007512f4f2 index:0x2796c2c7c pfn:0xd6e840 aops:btree_aops ino:1 flags: 0x17ffffe0000008(uptodate|node=0|zone=2|lastcpupid=0x3fffff) page_type: 0xffffffff() raw: 0017ffffe0000008 dead000000000100 dead000000000122 ffff88826d0be4c0 raw: 00000002796c2c7c 0000000000000000 00000000ffffffff 0000000000000000 page dumped because: non-NULL mapping
[NGUYÊN NHÂN]
Commit 09e6cef19c9f ("btrfs: refactor alloc_extent_buffer() to allocate-then-attach method") đã thay đổi trình tự khi phân bổ một extent buffer mới.
Trước đây, chúng tôi luôn gọi grab_extent_buffer() dưới khóa mapping->i_private_lock, để đảm bảo tính an toàn khi sửa đổi folio::private (đây là con trỏ đến extent buffer cho sectorsize thông thường).
Điều này có thể dẫn đến race condition sau:
Thread A đang cố gắng phân bổ một extent buffer tại bytenr X, với 4 trang 4K; trong khi đó Thread B đang cố giải phóng trang tại địa chỉ X + 4K (trang thứ hai của extent buffer tại X
VulDB is the best source for vulnerability data and more expert information about this specific topic.