p PatchFirst

CVE-2026-98991

CVE-2026-98991 · namespace: queue a mount only once for mount notifications

This page contains facts from public vulnerability sources. Check the original advisory before updating.

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.

Fix available

Published
Updated

Stack: system

Affected products and versions

  • linux

    Versions
    • ≥ bf630c40164162ba1d3933c2f5e3397d083e0948, < acbe9e4418e2ef7bef1a12e62e0e7d6145a15190: Affected (git)
    • ≥ bf630c40164162ba1d3933c2f5e3397d083e0948, < 702ff3fe499876e09c45558a05366d21a5bc41ab: Affected (git)
    • ≥ bf630c40164162ba1d3933c2f5e3397d083e0948, < bd2feb7796b6585938a4241e7b7c4148a6f7b762: Affected (git)

    Update to 702ff3fe499876e09c45558a05366d21a5bc41ab

  • linux

    Versions
    • 6.15: Affected
    • ≥ 0, < 6.15: Not affected (semver)
    • ≥ 6.18.57, ≤ 6.18.*: Not affected (semver)
    • ≥ 7.2.11, ≤ 7.2.*: Not affected (semver)
    • ≥ 7.3: Not affected (original_commit_for_fix)

    No fix published

  • linux Debian:14

    Versions
    • 6.12.100-1
    • 6.12.101-1
    • 6.12.105-1
    • 6.12.107-1
    • 6.12.111-1
    • 6.12.113-1
    • 6.12.38-1
    • 6.12.41-1
    • 6.12.43-1
    • 6.12.43-1~bpo12+1
    • 6.12.48-1
    • 6.12.57-1
    • 6.12.57-1~bpo12+1
    • 6.12.63-1
    • 6.12.63-1~bpo12+1
    • 6.12.69-1
    • 6.12.69-1~bpo12+1
    • 6.12.73-1
    • 6.12.73-1~bpo12+1
    • 6.12.74-1
    • 6.12.74-2
    • 6.12.74-2~bpo12+1
    • 6.12.85-1
    • 6.12.85-1~bpo12+1
    • 6.12.86-1
    • 6.12.86-1~bpo12+1
    • 6.12.88-1
    • 6.12.88-1~bpo12+1
    • 6.12.90-1
    • 6.12.90-1~bpo12+1
    • 6.12.90-2
    • 6.12.90-2~bpo12+1
    • 6.12.94-1
    • 6.12.94-1~bpo12+1
    • 6.12.95-1
    • 6.12.95-1~bpo12+1
    • 6.12.96-1
    • 6.13.10-1~exp1
    • 6.13.11-1~exp1
    • 6.13.2-1~exp1
    • 6.13.3-1~exp1
    • 6.13.4-1~exp1
    • 6.13.5-1~exp1
    • 6.13.6-1~exp1
    • 6.13.7-1~exp1
    • 6.13.8-1~exp1
    • 6.13.9-1~exp1
    • 6.13~rc6-1~exp1
    • 6.13~rc7-1~exp1
    • 6.14.3-1~exp1
    • 6.14.5-1~exp1
    • 6.14.6-1~exp1
    • 6.15-1~exp1
    • 6.15.1-1~exp1
    • 6.15.2-1~exp1
    • 6.15.3-1~exp1
    • 6.15.4-1~exp1
    • 6.15.5-1~exp1
    • 6.15.6-1~exp1
    • 6.15~rc7-1~exp1
    • 6.16-1~exp1
    • 6.16.1-1~exp1
    • 6.16.10-1
    • 6.16.11-1
    • 6.16.12-1
    • 6.16.12-1~bpo13+1
    • 6.16.12-2
    • 6.16.3-1
    • 6.16.3-1~bpo13+1
    • 6.16.5-1
    • 6.16.6-1
    • 6.16.7-1
    • 6.16.8-1
    • 6.16.9-1
    • 6.16~rc7-1~exp1
    • 6.17.10-1
    • 6.17.11-1
    • 6.17.12-1
    • 6.17.13-1
    • 6.17.13-1~bpo13+1
    • 6.17.2-1~exp1
    • 6.17.5-1~exp1
    • 6.17.6-1
    • 6.17.7-1
    • 6.17.7-2
    • 6.17.8-1
    • 6.17.8-1~bpo13+1
    • 6.17.9-1
    • 6.18.1-1~exp1
    • 6.18.10-1
    • 6.18.12-1
    • 6.18.12-1~bpo13+1
    • 6.18.13-1
    • 6.18.14-1
    • 6.18.15-1
    • 6.18.15-1~bpo13+1
    • 6.18.2-1~exp1
    • 6.18.3-1
    • 6.18.5-1
    • 6.18.5-1~bpo13+1
    • 6.18.8-1
    • 6.18.9-1
    • 6.18.9-1~bpo13+1
    • 6.18~rc4-1~exp1
    • 6.18~rc4-1~exp2
    • 6.18~rc5-1~exp1
    • 6.18~rc6-1~exp1
    • 6.18~rc7-1~exp1
    • 6.19-1~exp1
    • 6.19.10-1
    • 6.19.10-1~bpo13+1
    • 6.19.11-1
    • 6.19.11-1~bpo13+1
    • 6.19.12-1
    • 6.19.13-1
    • 6.19.13-1~bpo13+1
    • 6.19.14-1
    • 6.19.14-1~bpo13+1
    • 6.19.2-1~exp1
    • 6.19.3-1~exp1
    • 6.19.4-1~exp1
    • 6.19.5-1~exp1
    • 6.19.6-1
    • 6.19.6-2
    • 6.19.6-2~bpo13+1
    • 6.19.8-1
    • 6.19.8-1~bpo13+1
    • 6.19~rc4-1~exp1
    • 6.19~rc5-1~exp1
    • 6.19~rc6-1~exp1
    • 6.19~rc7-1~exp1
    • 6.19~rc8-1~exp1
    • 7.0-1~exp1
    • 7.0.1-1~exp1
    • 7.0.10-1
    • 7.0.10-1~bpo13+1
    • 7.0.12-1
    • 7.0.12-2
    • 7.0.12-2~bpo13+1
    • 7.0.13-1
    • 7.0.13-1~bpo13+1
    • 7.0.14-1
    • 7.0.3-1
    • 7.0.4-1
    • 7.0.4-1~bpo13+1
    • 7.0.7-1
    • 7.0.7-1~bpo13+1
    • 7.0.9-1
    • 7.0.9-1~bpo13+1
    • 7.1.1-1~exp1
    • 7.1.10-1
    • 7.1.12-1
    • 7.1.13-1
    • 7.1.13-1~bpo13+1
    • 7.1.2-1~exp1
    • 7.1.3-1
    • 7.1.3-1+sunvdc
    • 7.1.3-1~bpo13+1
    • 7.1.4-1
    • 7.1.5-1
    • 7.1.6-1
    • 7.1.7-1
    • 7.1.7-1~bpo13+1
    • 7.1.8-1
    • 7.1.8-1~bpo13+1
    • 7.1.8-2
    • 7.1.9-1
    • 7.1.9-1+sparc64
    • 7.1~rc2-1~exp1
    • 7.1~rc3-1~exp1
    • 7.1~rc4-1~exp1
    • 7.1~rc4-1~exp2
    • 7.1~rc5-1~exp1
    • 7.1~rc7-1~exp1
    • 7.2.10-1
    • 7.2.2-1~exp1
    • 7.2.3-1~exp1
    • 7.2.6-1
    • 7.2.6-1~bpo13+1
    • 7.2.7-1
    • 7.2.8-1
    • 7.2.9-1
    • 7.2.9-1~bpo13+1
    • 7.2~rc3-1~exp1
    • 7.2~rc5-1~exp1
    • 7.2~rc7-1~exp1
    Affected ranges
    • ECOSYSTEM: < 7.2.11-1

    Update to 7.2.11-1

Original sources

Check your server →