{"id":28476,"date":"2026-09-25T00:31:31","date_gmt":"2026-09-24T16:31:31","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-93212"},"modified":"2026-09-25T00:31:31","modified_gmt":"2026-09-24T16:31:31","slug":"cve-2026-93212","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-93212","title":{"rendered":"CVE-2026-93212 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnfsd: guard nfsd_serv"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nfsd: guard nfsd_serv deref in nfsd_file_net_dispose<\/p>\n<p>nfsd_file_net_dispose() is the consumer side of l-&gt;freeme: the nfsd<br \/>\nservice thread loop calls it to drain entries that the filecache<br \/>\ngarbage collector and shrinker append via<br \/>\nnfsd_file_dispose_list_delayed().  During per-net teardown,<br \/>\nnn-&gt;nfsd_serv is cleared before the filecache laundrette is shut<br \/>\ndown, so the service thread can still run a dispose pass that finds<br \/>\nmore than eight entries on l-&gt;freeme and dereferences a NULL<br \/>\nsvc_serv:<\/p>\n<p>    nfsd service thread loop<br \/>\n      nfsd_file_net_dispose(nn)<br \/>\n        if (!list_empty(&amp;l-&gt;freeme)) {<br \/>\n            &#8230;<br \/>\n            svc_wake_up(nn-&gt;nfsd_serv);   \/* nn-&gt;nfsd_serv == NULL *\/<br \/>\n        }<\/p>\n<p>The sibling helper nfsd_file_dispose_list_delayed() already documents<br \/>\nthis ordering and caches nn-&gt;nfsd_serv into a local before testing it<br \/>\nfor NULL.  nfsd_file_net_dispose() was introduced with the same raw<br \/>\nsvc_wake_up(nn-&gt;nfsd_serv) call and never picked up the guard.<\/p>\n<p>Fix by loading nn-&gt;nfsd_serv into a local svc_serv pointer and only<br \/>\ncalling svc_wake_up() when it is non-NULL, matching the pattern in<br \/>\nnfsd_file_dispose_list_delayed().<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nfsd: guard nfsd_serv deref in nfsd_file_net_dispose<\/p>\n<p>nfsd_file_net_dispose() is the consumer side of l-&gt;freeme: the nfsd<br \/>\nservice t<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-28476","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/28476","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=28476"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=28476"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=28476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}