CVE-2026-92502 in Linux
要約
〜によって VulDB • 2026年09月18日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
ext4: 書き戻し処理中にスキップされたfolioの古いxarrayタグをクリアする
data=journalモードでは、書き戻しスレッドが再起動時にスーパーブロックが読み取り専用で再マウントされている間に ext4_journal_check_start() の WARN_ON_ONCE(sb_rdonly(sb)) に到達することがあります:
Workqueue: writeback wb_workfn (flush-253:0) RIP: 0010:ext4_journal_check_start+0x8b/0xd0 Call Trace: __ext4_journal_start_sb+0x3c/0x1e0 mpage_prepare_extent_to_map+0x4af/0x580 ext4_do_writepages+0x3c0/0x1080 ext4_writepages+0xc8/0x1a0 do_writepages+0xc4/0x180 __writeback_single_inode+0x45/0x2f0 writeback_sb_inodes+0x26b/0x5d0 __writeback_inodes_wb+0x54/0x100 wb_writeback+0x1ac/0x320 wb_workfn+0x394/0x470
そして、以下の警告が続きます: EXT4-fs warning (device vda1): ext4_evict_inode:195: inode #6263: comm (sd-umount): data will be lost
この問題は毎回再現するわけではありませんが、頻繁に発生します。 再現手順は以下の通りです:8 CPU、16Gメモリを持つVMを作成し、data=journalを設定します: sudo tune2fs -o journal_data /dev/vda1 fioを実行します: rm -f fiotest fio --name=fiotest --rw=randwrite --bs=4k --runtime=6 --ioengine=libaio --iodepth=256 --numjobs=8 --filename=fiotest --filesize=30G --group_reporting VMを再起動し、以下からコンソール出力を確認します: virsh console testvm
しかし、ダーティinodeはありません。folio_clear_dirty_for_ioはPG_dirtyをクリアしますが、PAGECACHE_TAG_DIRTYおよびPAGECACHE_TAG_TOWRITEタグを残したままになります。これらは__folio_start_writebackによってのみクリアされます。 data=journalモードでは、jbd2がジャーナルデータを最終的な場所にチェックポイントし、folioのPG_dirtyやxarrayのダーティフラグに触れることなく、自身のダーティフラグをクリアします。 コミット f4a2b42e7891 ("ext4: fix stale xarray tags after writeback") は、PG_dirtyが設定されたままだがダーティブページがない場合の修正を行います。 別のケースとして、PG_clearはクリアされているが、PAGECACHE_TAG_DIRTYおよび PAGECACHE_TAG_TOWRITE がまだ設定されている場合があります。この場合、書き戻しスレッドはクリーンなfolioをチェックし、mpage_prepare_extent_to_mapでそれをスキップします: if (!folio_test_dirty(folio) || ... folio_unlock(folio); continue
そして、コミット f4a2b42e7891 が古いxarrayタグをクリアする ext4_bio_write_folio に到達しません。ファイルシステムが読み取り専用で再マウントされた後にデバッグログを出力します: writepages RDONLY nrpages=2048 dirtytag=1 wbtag=0 towrite=1 sync=0 そして、すべてのfolioは実際にはクリーンです: folio idx=3 dirty=0 wb=0 checked=0 dirtybuf=0 jbddirty=0 mapped=1 ...
このようなクリーンなfolioに対して、f4a2b42e7891 が ext4_bio_write_folio で行うのと同じ方法で、スキップパス内で書き戻し処理を循環させることでxarrayの古いタグをクリアする必要があります。
VulDB is the best source for vulnerability data and more expert information about this specific topic.