{"id":21636,"date":"2026-09-12T04:31:27","date_gmt":"2026-09-11T20:31:27","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89714"},"modified":"2026-09-12T04:31:27","modified_gmt":"2026-09-11T20:31:27","slug":"cve-2026-89714","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89714","title":{"rendered":"CVE-2026-89714 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nNFS: fix delegation_h"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>NFS: fix delegation_hash_table leak when nfs4_server_common_setup() fails<\/p>\n<p>nfs4_server_common_setup() allocates server-&gt;delegation_hash_table<br \/>\nfirst, but server-&gt;destroy &#8211; the only path that frees the table via<br \/>\nnfs4_destroy_server() &#8211; is not assigned until the very end of the<br \/>\nfunction. If any intermediate step fails (the is_ds_only_client()<br \/>\ncheck, nfs4_init_session(), nfs4_get_rootfh(), or nfs_probe_server()),<br \/>\nthe function returns with server-&gt;destroy still NULL, so the caller&#8217;s<br \/>\nnfs_free_server() skips the destroy callback and the hash table is<br \/>\nleaked (4 KiB per attempt with the default delegation watermark).<\/p>\n<p>This is trivially reachable from userspace: every failed NFSv4 mount<br \/>\nleaks one allocation. A client that persistently retries a mount that<br \/>\ncannot succeed leaks kernel memory without bound. Observed in<br \/>\nproduction where a Longhorn backup poller retried mount.nfs4 against<br \/>\nan NFSv3-only server roughly 10 times per second, leaking ~3.4 GiB of<br \/>\nunreclaimable slab (kmalloc-rnd-13-4k) per day; the node accumulated<br \/>\n12 GiB of leaked slab before the source was identified via the<br \/>\nkmem:kmalloc tracepoint (call_site=nfs4_delegation_hash_alloc).<\/p>\n<p>Reproducer:<\/p>\n<p>  # server exports NFSv3 only (or export path absent for v4)<br \/>\n  while :; do mount -t nfs4 :\/missing \/mnt; done<br \/>\n  # watch SUnreclaim in \/proc\/meminfo grow 4 KiB per iteration<\/p>\n<p>Free the table on the error paths between the allocation and the<br \/>\nassignment of server-&gt;destroy.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>NFS: fix delegation_hash_table leak when nfs4_server_common_setup() fails<\/p>\n<p>nfs4_server_common_setup() allocates server-&gt;delegation_<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21636","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21636","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=21636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}