{"id":24523,"date":"2026-09-16T20:32:25","date_gmt":"2026-09-16T12:32:25","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89836"},"modified":"2026-09-16T20:32:25","modified_gmt":"2026-09-16T12:32:25","slug":"cve-2026-89836","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89836","title":{"rendered":"CVE-2026-89836 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nf2fs: fix folio_nr_pa"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>f2fs: fix folio_nr_pages() race after put in large folio invalidate<\/p>\n<p>Our v6.18 based Android system is continuely suffering livelock and bad<br \/>\npage stat as shown in[1] which related to broken xarray slot status. By<br \/>\ninvestigating big folio operations within f2fs, we find below races and<br \/>\nfix it by get the nr_pages before drop the refcount and folio_lock.<\/p>\n<p>f2fs_get_read_data_folio() calls f2fs_folio_put() before<br \/>\nfolio_nr_pages() when invalidating a large folio from the page cache.<br \/>\nThat unlocks the folio and drops the caller reference, leaving a window<br \/>\nwhere a concurrent truncate or folio split can shrink the compound folio<br \/>\nor free it before the invalidate range is computed. An undersized range<br \/>\nthen leaves split sub-folios in mapping-&gt;i_pages, which can later<br \/>\ninteract badly with truncate and reclaim (stale xarray entries and bad<br \/>\npage state when folio-&gt;mapping no longer matches the mapping being<br \/>\ntruncated).<\/p>\n<p>[1]<br \/>\nPID: 2594     TASK: ffffff8169b81580  CPU: 7    COMMAND: &#8220;Thread-3&#8221;<br \/>\n #0 [ffffffc08ef2b8a0] xas_load at ffffffe52d1f42a4<br \/>\n #1 [ffffffc08ef2b900] find_get_entries at ffffffe52c185798<br \/>\n #2 [ffffffc08ef2bb60] truncate_inode_pages_range at ffffffe52c19e83c<br \/>\n #3 [ffffffc08ef2bbc0] truncate_inode_pages_final at ffffffe52c19ec2c<br \/>\n #4 [ffffffc08ef2bc20] f2fs_evict_inode at ffffffe52c4c8400<br \/>\n #5 [ffffffc08ef2bcc0] evict at ffffffe52c2de9f4<br \/>\n #6 [ffffffc08ef2bd00] iput at ffffffe52c2db1b4<br \/>\n #7 [ffffffc08ef2bd30] dentry_unlink_inode at ffffffe52c2d7204<br \/>\n #8 [ffffffc08ef2bd50] __dentry_kill at ffffffe52c2d3dcc<br \/>\n #9 [ffffffc08ef2bd80] dput at ffffffe52c2d3c3c<br \/>\n #10 [ffffffc08ef2bda0] __fput at ffffffe52c2b0a7c<br \/>\n #11 [ffffffc08ef2bde0] ____fput at ffffffe52c2b1034<br \/>\n #12 [ffffffc08ef2bdf0] task_work_run at ffffffe52beea200<br \/>\n #13 [ffffffc08ef2be20] exit_to_user_mode_loop at ffffffe52bfbc17c<br \/>\n #14 [ffffffc08ef2be80] el0_svc at ffffffe52d1f8e54<br \/>\n #15 [ffffffc08ef2beb0] el0t_64_sync_handler at ffffffe52d1f8d10<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>f2fs: fix folio_nr_pages() race after put in large folio invalidate<\/p>\n<p>Our v6.18 based Android system is continuely suffering liveloc<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-24523","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/24523","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=24523"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=24523"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=24523"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}