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

namespace: queue a mount only once for mount notifications

mnt_notify_add() puts a mount on notify_list. It doesn't check whether
the mount is on the list already. That's fine as long as every mount is
queued at most once per namespace_sem hold. It isn't.

propagate_umount() moves a surviving overmount off a stack of mounts
that are going away and queues it as moved. shrink_submounts() and
mark_mounts_for_expiry() call umount_tree() for several mounts under a
single namespace_sem hold. So the second umount_tree() can take down
exactly the mount the first one reparented, reparent it once more and so
end up queueing it a second time.

The second list_add_tail() cuts the mounts queued in between out of the
list while the head still points at the last of them. notify_mnt_list()
then only visits that one mount and the others are freed after the grace
period with notify_list still pointing at them. Every later mount
operation on the host walks freed memory:

BUG: KASAN: slab-use-after-free in __list_add_valid_or_report
Read of size 8 at addr ffff8881003d57e0 by task notify_dq/162
__list_add_valid_or_report+0x15c/0x1a0
mnt_add_to_ns+0x322/0x890
attach_recursive_mnt.isra.0+0xf2a/0x1a00
path_mount+0x139c/0x1d40

This needs a mount with MNT_SHRINKABLE to bind from. That's what
finish_automount() creates (submounts of NFS, AFS and CIFS and the
tracefs mount below debugfs). Bind mounts inherit the flag. A mount
namespace with a FAN_MARK_MNTNS mark does the rest and root in a user
namespace can have both.

Initialize to_notify in alloc_vfsmnt() and leave a mount alone that is
queued already. mnt_notify() looks at the state the mount has when the
list is drained so a single entry per mount is enough. The move event
for a mount that is unmounted under the same hold is lost. That's fine.
The detach is what matters.
Published: 2026-10-23
Score: n/a
EPSS: n/a
KEV: No
Impact: Kernel memory corruption via use-after-free
Action: Immediate Patch
AI Analysis

Impact

In the Linux kernel, the process that queues mount notifications does not check if a mount is already queued. This oversight allows the same mount to be added to the notification list twice, resulting in a use‑after‑free condition. The Kubernetes Stack‑Address‑Sanitizer logs show a read of freed memory when the notify list is processed, exposing kernel memory for corruption. An attacker who can trigger the double‑queue path—by performing a sequence of mount and unmount operations on the same namespace—could potentially execute arbitrary code within the kernel or cause a denial of service by corrupting internal mount structures.

Affected Systems

All Linux kernel releases that contain the unpatched double‑queue logic for mount notifications are vulnerable. The issue persists until the kernel is updated with the resolution for this bug. No specific vendor versions are listed, so the vulnerability applies to any Linux kernel that has not yet received the official patch.

Risk and Exploitability

The lack of a CVSS score and EPSS data does not diminish the severity; the bug leads directly to kernel memory corruption, which is a high‑risk vulnerability. Since the flaw is triggered by local mount operations, the attack vector is local and would require the ability to perform privileged mounts. The vulnerability is not listed in CISA KEV, but its exploitability remains high if a local attacker can orchestrate the required mount sequence.

Generated by OpenCVE AI on October 23, 2026 at 14:49 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply the latest kernel update that includes the patch for the mount notification double‑queue issue.
  • If an immediate kernel upgrade is unavailable, disable automount features that create bind mounts with the MNT_SHRINKABLE flag, such as NFS, AFS, CIFS, and tracefs mounts within debugfs.
  • Restrict unprivileged users from performing mount and unmount operations, for example by tightening mount namespace permissions or using security modules (SELinux, AppArmor) to limit mount capabilities.

Generated by OpenCVE AI on October 23, 2026 at 14:49 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 23 Oct 2026 15:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416

Fri, 23 Oct 2026 12:45:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: namespace: queue a mount only once for mount notifications mnt_notify_add() puts a mount on notify_list. It doesn't check whether the mount is on the list already. That's fine as long as every mount is queued at most once per namespace_sem hold. It isn't. propagate_umount() moves a surviving overmount off a stack of mounts that are going away and queues it as moved. shrink_submounts() and mark_mounts_for_expiry() call umount_tree() for several mounts under a single namespace_sem hold. So the second umount_tree() can take down exactly the mount the first one reparented, reparent it once more and so end up queueing it a second time. The second list_add_tail() cuts the mounts queued in between out of the list while the head still points at the last of them. notify_mnt_list() then only visits that one mount and the others are freed after the grace period with notify_list still pointing at them. Every later mount operation on the host walks freed memory: BUG: KASAN: slab-use-after-free in __list_add_valid_or_report Read of size 8 at addr ffff8881003d57e0 by task notify_dq/162 __list_add_valid_or_report+0x15c/0x1a0 mnt_add_to_ns+0x322/0x890 attach_recursive_mnt.isra.0+0xf2a/0x1a00 path_mount+0x139c/0x1d40 This needs a mount with MNT_SHRINKABLE to bind from. That's what finish_automount() creates (submounts of NFS, AFS and CIFS and the tracefs mount below debugfs). Bind mounts inherit the flag. A mount namespace with a FAN_MARK_MNTNS mark does the rest and root in a user namespace can have both. Initialize to_notify in alloc_vfsmnt() and leave a mount alone that is queued already. mnt_notify() looks at the state the mount has when the list is drained so a single entry per mount is enough. The move event for a mount that is unmounted under the same hold is lost. That's fine. The detach is what matters.
Title namespace: queue a mount only once for mount notifications
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-10-23T12:20:10.289Z

Reserved: 2026-09-25T10:25:14.384Z

Link: CVE-2026-98991

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-23T13:17:21.137

Modified: 2026-10-23T13:17:21.137

Link: CVE-2026-98991

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-23T15:00:13Z

Weaknesses