CVE-2026-93212

Summary

In the Linux kernel, the following vulnerability has been resolved:

nfsd: guard nfsd_serv deref in nfsd_file_net_dispose

nfsd_file_net_dispose() is the consumer side of l->freeme: the nfsd service thread loop calls it to drain entries that the filecache garbage collector and shrinker append via nfsd_file_dispose_list_delayed(). During per-net teardown, nn->nfsd_serv is cleared before the filecache laundrette is shut down, so the service thread can still run a dispose pass that finds more than eight entries on l->freeme and dereferences a NULL svc_serv:

nfsd service thread loop
  nfsd_file_net_dispose(nn)
    if (!list_empty(&l->freeme)) {
        ...
        svc_wake_up(nn->nfsd_serv);   /* nn->nfsd_serv == NULL */
    }

The sibling helper nfsd_file_dispose_list_delayed() already documents this ordering and caches nn->nfsd_serv into a local before testing it for NULL. nfsd_file_net_dispose() was introduced with the same raw svc_wake_up(nn->nfsd_serv) call and never picked up the guard.

Fix by loading nn->nfsd_serv into a local svc_serv pointer and only calling svc_wake_up() when it is non-NULL, matching the pattern in nfsd_file_dispose_list_delayed().

Affected Software

VendorProductVersion RangeStatus
LinuxLinuxffb402596147ac583f3464ff5c48feb9423e3838 < f4776c1c4b38fbc459420321c8ece87d0f7f95fbaffected
LinuxLinuxffb402596147ac583f3464ff5c48feb9423e3838 < 59baf45a06435194005fc5fa9a42d89f77a30432affected
LinuxLinuxffb402596147ac583f3464ff5c48feb9423e3838 < 766170b4fd2daaf5c4d6735560101474e18edab6affected
LinuxLinuxffb402596147ac583f3464ff5c48feb9423e3838 < 9f1ddfc8cb9076592401a611eb3a44d36186d014affected
LinuxLinux6.9affected
LinuxLinux0 < 6.9unaffected
LinuxLinux6.12.109 <= 6.12.*unaffected
LinuxLinux6.18.50 <= 6.18.*unaffected
LinuxLinux7.2.4 <= 7.2.*unaffected
LinuxLinux7.3-rc1 <= *unaffected

Weaknesses

References