CVE-2024-38306 in Linuxthông tin

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.

Nguồn

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!