{"id":25871,"date":"2026-09-18T04:32:00","date_gmt":"2026-09-17T20:32:00","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-92502"},"modified":"2026-09-18T04:32:00","modified_gmt":"2026-09-17T20:32:00","slug":"cve-2026-92502","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-92502","title":{"rendered":"CVE-2026-92502 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\next4: clear stale xar"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ext4: clear stale xarray tags on folios skipped during writeback<\/p>\n<p>In data=journal mode, the writeback thread can hit the<br \/>\nWARN_ON_ONCE(sb_rdonly(sb)) in ext4_journal_check_start() while the<br \/>\nsuperblock is being remounted read-only during reboot:<\/p>\n<p>Workqueue: writeback wb_workfn (flush-253:0)<br \/>\nRIP: 0010:ext4_journal_check_start+0x8b\/0xd0<br \/>\nCall Trace:<br \/>\n  __ext4_journal_start_sb+0x3c\/0x1e0<br \/>\n  mpage_prepare_extent_to_map+0x4af\/0x580<br \/>\n  ext4_do_writepages+0x3c0\/0x1080<br \/>\n  ext4_writepages+0xc8\/0x1a0<br \/>\n  do_writepages+0xc4\/0x180<br \/>\n  __writeback_single_inode+0x45\/0x2f0<br \/>\n  writeback_sb_inodes+0x26b\/0x5d0<br \/>\n  __writeback_inodes_wb+0x54\/0x100<br \/>\n  wb_writeback+0x1ac\/0x320<br \/>\n  wb_workfn+0x394\/0x470<\/p>\n<p>And followed by the warning:<br \/>\nEXT4-fs warning (device vda1): ext4_evict_inode:195: inode #6263:<br \/>\ncomm (sd-umount): data will be lost<\/p>\n<p>This issue is not reproduced every time, but frequently.<br \/>\nThe reproduction step is to create a VM with 8 CPUs, 16G memory and<br \/>\nsetup data=journal:<br \/>\nsudo tune2fs -o journal_data \/dev\/vda1<br \/>\nRun fio:<br \/>\nrm -f fiotest<br \/>\nfio &#8211;name=fiotest &#8211;rw=randwrite &#8211;bs=4k &#8211;runtime=6 &#8211;ioengine=libaio<br \/>\n&#8211;iodepth=256 &#8211;numjobs=8 &#8211;filename=fiotest &#8211;filesize=30G<br \/>\n&#8211;group_reporting<br \/>\nReboot the VM, and check the console output from:<br \/>\nvirsh console testvm<\/p>\n<p>But there is no dirty inode, folio_clear_dirty_for_io clears PG_dirty<br \/>\nbut leaves tags PAGECACHE_TAG_DIRTY and PAGECACHE_TAG_TOWRITE set which<br \/>\nare only cleared by __folio_start_writeback.<br \/>\nIn data=journal mode, jbd2 checkpoints the journalled data to its final<br \/>\nlocation and clears its own dirty flag without touching folio PG_dirty<br \/>\nor xarray dirty flags.<br \/>\nThe commit f4a2b42e7891 (&#8220;ext4: fix stale xarray tags after writeback&#8221;)<br \/>\nfixes when PG_dirty is still set but there is no dirty page.<br \/>\nAnother case is PG_dirty is cleared, but PAGECACHE_TAG_DIRTY and<br \/>\nPAGECACHE_TAG_TOWRITE is still set. In this case, writeback thread<br \/>\nchecks clean folio and skips it in mpage_prepare_extent_to_map:<br \/>\nif (!folio_test_dirty(folio) ||<br \/>\n    &#8230;<br \/>\n        folio_unlcok(folio);<br \/>\n\tcontinue<\/p>\n<p>And never reaches ext4_bio_write_folio where the commit f4a2b42e7891<br \/>\nclears the stale xarray tags. Print debug logs after the filesystem<br \/>\nis remounted read-only:<br \/>\nwritepages RDONLY nrpages=2048 dirtytag=1 wbtag=0 towrite=1 sync=0<br \/>\nAnd all folios are actually clean:<br \/>\nfolio idx=3 dirty=0 wb=0 checked=0 dirtybuf=0 jbddirty=0 mapped=1<br \/>\n&#8230;<\/p>\n<p>We need to clear the xarray stale tags for such clean folios by<br \/>\ncycling them through writeback in the skip path, the same way<br \/>\nf4a2b42e7891 does in ext4_bio_write_folio.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ext4: clear stale xarray tags on folios skipped during writeback<\/p>\n<p>In data=journal mode, the writeback thread can hit the<br \/>\nWARN_ON_ON<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-25871","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/25871","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=25871"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25871"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25871"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}