CVE-2026-93075: dax/fsdev: clear pgmap ops and owner on unbind
In the Linux kernel, the following vulnerability has been resolved:
dax/fsdev: clear pgmap ops and owner on unbind
fsdevdaxprobe() sets pgmap->ops = &fsdevpagemapops and pgmap->owner = devdax, but nothing ever clears them. For a dynamic device the pgmap is devm-allocated and freed on unbind, so this is harmless. For a static device the pgmap is the shared, long-lived one owned by the dax bus (killdevdax() only NULLs devdax->pgmap for the non-static case), and device.c's probe sets only pgmap->type, never clearing ops/owner.
So after fsdev unbinds a static device the stale fsdevpagemapops survives on the shared pgmap. If the device is then rebound to devicedax (MEMORYDEVICEGENERIC, which installs no ->memoryfailure), or the fsdevdax module is unloaded, a subsequent memoryfailure on that pgmap dispatches through the stale -- and possibly freed -- handler.
Register a devm action that clears pgmap->ops and pgmap->owner on unbind, symmetric with setting them at probe, so the pgmap carries no fsdev state once fsdev is detached.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Apply the Linux kernel fix described in 'dax/fsdev: clear pgmap ops and owner on unbind' so a devm action clears pgmap->ops and pgmap->owner when the fsdev device is unbound, preventing stale fsdev_pagemap_ops dispatch after detachment.
Linux kernel dax/fsdev pgmap->ops and pgmap->owner clearing behavior on unbind = clear pgmap->ops and pgmap->owner via a devm action when fsdev unbinds