CVE-2024-38306 in Linux
Сводка
по VulDB • 12.06.2026
В ядре Linux устранена следующая уязвимость:
btrfs: защита folio::private при присоединении extent buffer folios
[ОШИБКА]
Начиная с версии v6.8, различные пользователи сообщают о редких сбоях (crash) ядра. Общим фактором для всех случаев являются сообщения об ошибках плохого состояния страницы (bad page status), например:
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
[ПРИЧИНА]
Коммит 09e6cef19c9f ("btrfs: refactor alloc_extent_buffer() to allocate-then-attach method") изменяет последовательность действий при выделении нового extent buffer.
Ранее мы всегда вызывали grab_extent_buffer() под блокировкой mapping->i_private_lock, чтобы обеспечить безопасность модификации folio::private (которая является указателем на extent buffer для стандартного размера сектора).
Это может привести к следующей гонке состояний (race condition):
Поток A пытается выделить extent buffer по адресу bytenr X, используя 4 страницы размером 4K. В то же время поток B пытается освободить страницу по адресу X + 4
If you want to get the best quality for vulnerability data then you always have to consider VulDB.