{"id":21604,"date":"2026-09-12T04:31:24","date_gmt":"2026-09-11T20:31:24","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89682"},"modified":"2026-09-12T04:31:24","modified_gmt":"2026-09-11T20:31:24","slug":"cve-2026-89682","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89682","title":{"rendered":"CVE-2026-89682 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnfsd: fix fcache_disp"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nfsd: fix fcache_disposal UAF by inlining dispose state into nfsd_net<\/p>\n<p>nfsd_file_dispose_list_delayed() defers fput() to nfsd service threads<br \/>\nvia a per-net freeme queue, preventing the shrinker and GC worker from<br \/>\nbearing the cost of closing files (see ffb402596147).  However, the<br \/>\nqueue lives in a separately-allocated struct nfsd_fcache_disposal that<br \/>\nis freed by nfsd_free_fcache_disposal_net() during per-net teardown.<br \/>\nThe global shrinker, laundrette, and fsnotify callbacks can still be<br \/>\ninside nfsd_file_dispose_list_delayed() dereferencing that pointer,<br \/>\ncausing a use-after-free.<\/p>\n<p>Inline the spinlock and freeme list directly into struct nfsd_net (as<br \/>\nfcache_dispose_lock and fcache_dispose_list), eliminating the separately<br \/>\nallocated struct nfsd_fcache_disposal entirely.  These fields now have<br \/>\nthe same lifetime as the net namespace itself, so there is no dangling<br \/>\npointer to chase.<\/p>\n<p>nfsd_file_cache_start_net() now just initializes the inline fields and<br \/>\ncannot fail due to allocation.  nfsd_file_cache_shutdown_net() drains<br \/>\nthe inline list directly instead of freeing a separate struct.  The<br \/>\nalloc\/free helpers are removed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nfsd: fix fcache_disposal UAF by inlining dispose state into nfsd_net<\/p>\n<p>nfsd_file_dispose_list_delayed() defers fput() to nfsd servi<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21604","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21604","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=21604"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21604"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21604"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}