{"id":25869,"date":"2026-09-18T04:32:00","date_gmt":"2026-09-17T20:32:00","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-92500"},"modified":"2026-09-18T04:32:00","modified_gmt":"2026-09-17T20:32:00","slug":"cve-2026-92500","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-92500","title":{"rendered":"CVE-2026-92500 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\next4: use fsdata to t"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ext4: use fsdata to track inline data write state and fix race<\/p>\n<p>Instead of checking the live inode state (ext4_has_inline_data(inode)<br \/>\nand ext4_test_inode_state(inode, EXT4_STATE_MAY_INLINE_DATA)) in the<br \/>\nwrite_end handlers, use the fsdata parameter of the address space<br \/>\noperations to explicitly pass down the state in which write_begin<br \/>\nprepared the write.<\/p>\n<p>A concurrent thread (such as ext4_page_mkwrite()) can convert the<br \/>\ninline data to an extent between write_begin and write_end. If this<br \/>\nhappens, the write_end handlers would previously miss the inline<br \/>\nwrite_end path and fall through to extent-based write_end logic.<br \/>\nHowever, since block buffers were never allocated in write_begin,<br \/>\nthis resulted in NULL pointer dereferences or data loss because<br \/>\nfolio_buffers(folio) was NULL.<\/p>\n<p>Define EXT4_WRITE_DATA_INLINE (4) as a bit flag (Bit 2), treating<br \/>\nfsdata as bitwise flags rather than mutually exclusive enums to keep<br \/>\nstates of the write path independent. Communicate this state via<br \/>\nfsdata:<br \/>\n1) ext4_write_begin() and ext4_da_write_begin() set the<br \/>\n   EXT4_WRITE_DATA_INLINE bit in *fsdata via bitwise OR when an inline<br \/>\n   write is successfully prepared.<br \/>\n2) On entry, ext4_write_begin() clears the EXT4_WRITE_DATA_INLINE bit<br \/>\n   to safely handle VFS retries (where generic_perform_write() bypasses<br \/>\n   the fsdata initialization on its retry jump).<br \/>\n3) The write_end handlers perform a bitwise AND to check if the<br \/>\n   EXT4_WRITE_DATA_INLINE bit is set and invoke the inline write_end<br \/>\n   helper accordingly.<\/p>\n<p>Furthermore, during a buffered write, ext4_write_inline_data_end()<br \/>\nacquires the xattr lock after preparing the write. If a concurrent<br \/>\npage fault (ext4_page_mkwrite()) converts the inline data to an extent<br \/>\nafter the write_end handlers check the state but before<br \/>\next4_write_inline_data_end() acquires the xattr write lock, the<br \/>\nsubsequent check will trigger a kernel panic via<br \/>\nBUG_ON(!ext4_has_inline_data(inode)).<\/p>\n<p>To keep git history working and bisectability clean, replace the<br \/>\nBUG_ON check in ext4_write_inline_data_end() with a graceful error-<br \/>\nhandling retry path in this same commit. If the inline data is cleared<br \/>\nafter locking the xattr, we safely release all resources (releasing<br \/>\niloc.bh, unlocking\/putting the folio, stopping the active journal<br \/>\ntransaction handle) and return 0 (VFS retry) to let the generic write<br \/>\npath retry the operation safely.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ext4: use fsdata to track inline data write state and fix race<\/p>\n<p>Instead of checking the live inode state (ext4_has_inline_data(inod<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-25869","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/25869","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=25869"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25869"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25869"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}