---
id: CVE-2026-98995
title: 'namespace: reset the old parent''s ->overmount in mnt_change_mountpoint()'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  namespace: reset the old parent's ->overmount in mnt_change_mountpoint()

  __umount_mnt() resets ->overmount of the parent when it unmounts the
  mount that overmounts it.…
severity: high
cvss: 7.8
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'
cvssSource: cna
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= ffdc52fbbd5835a936ad683c943d6d103a2d4514 <
    5e0a1f2c753a79749bc2ead3ae2f2ede3941daa5
  - >-
    Linux >= ffdc52fbbd5835a936ad683c943d6d103a2d4514 <
    08d575ee89393fd812dbdca7b5d7b4574cd5a564
  - >-
    Linux >= ffdc52fbbd5835a936ad683c943d6d103a2d4514 <
    476ef286a7a5db8bda51325dc0c45887b4d99d9a
  - Linux 6.17
published: '2026-10-23'
updated: '2026-10-24'
sourceUpdated: '2026-10-24T14:09:55.095Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-98995'
references:
  - url: 'https://git.kernel.org/stable/c/5e0a1f2c753a79749bc2ead3ae2f2ede3941daa5'
  - url: 'https://git.kernel.org/stable/c/08d575ee89393fd812dbdca7b5d7b4574cd5a564'
  - url: 'https://git.kernel.org/stable/c/476ef286a7a5db8bda51325dc0c45887b4d99d9a'
tags:
  - cve.org
epss: 0.00206
epssPercentile: 0.10196
ingestedAt: '2026-10-23T13:24:55.544Z'
---

## Overview

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

namespace: reset the old parent's ->overmount in mnt_change_mountpoint()

__umount_mnt() resets ->overmount of the parent when it unmounts the
mount that overmounts it. mnt_change_mountpoint() doesn't. It moves the
mount to its new parent and leaves the old one pointing at it.

For a mount that is moved beneath in attach_recursive_mnt() that doesn't
matter. The new mount has already reset ->overmount of the old parent by
the time the old top mount is moved onto it.

It matters for reparent() though. propagate_umount() moves a surviving
overmount onto the first ancestor that isn't going to be unmounted. The
mount it was taken from is unmounted immediately afterwards. If a file
descriptor keeps that unmounted mount alive ->overmount points at the
moved mount. That's a dangling pointer and UAF as the moved mount is
unmounted and freed.

do_lock_mount() follows ->overmount from the target path under
mount_lock. With a file descriptor on such a mount as the target of a
mount beneath topmost_overmount() walks into the freed mount and
do_lock_mount() takes references on whatever it finds there.

So reset ->overmount of the old parent in mnt_change_mountpoint() the
same way __umount_mnt() does. A mount's ->overmount is then always a
mount that is attached to it.

## Affected

- `Linux >= ffdc52fbbd5835a936ad683c943d6d103a2d4514 < 5e0a1f2c753a79749bc2ead3ae2f2ede3941daa5`
- `Linux >= ffdc52fbbd5835a936ad683c943d6d103a2d4514 < 08d575ee89393fd812dbdca7b5d7b4574cd5a564`
- `Linux >= ffdc52fbbd5835a936ad683c943d6d103a2d4514 < 476ef286a7a5db8bda51325dc0c45887b4d99d9a`
- `Linux 6.17`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
