---
id: "CVE-2026-98994"
kind: "vulnerability"
aliases: ["CVE-2026-98994"]
title: "Linux kernel: statmount reads freed parent mount, causing use-after-free"
severity: "unknown"
cvss: null
epss: 0.00198
exploited: false
status: "open"
category: "other"
products: []
ecosystems: []
tags: ["linux-kernel", "other"]
not_affected_if: []
published_at: "2026-10-23T13:17:21+00:00"
first_seen_at: "2026-10-23T21:57:33+00:00"
updated_at: "2026-10-25T12:38:50+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-98994", "first_seen_at": "2026-10-23T21:57:33+00:00"}, {"source": "epss", "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-98994", "first_seen_at": "2026-10-25T12:38:50+00:00"}]
---

# Linux kernel: statmount reads freed parent mount, causing use-after-free

In the Linux kernel's statmount path, a file descriptor on an unmounted mount can cause the parent mount to be read after it has been freed. The sources describe a race where an attacker-reachable call dereferences a dangling pointer, but they do not state the resulting impact beyond a memory-safety bug.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- unknown

## Fix

- unknown

## Timeline

- 2026-10-23T21:57:33+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-98994
- 2026-10-25T12:38:50+00:00 epss https://api.first.org/data/v1/epss?cve=CVE-2026-98994

## From the sources

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

statmount: read the parent of an unmounted mount under mount_lock

statmount_mnt_basic() reads the ids of the parent through m->mnt_parent
with namespace_sem held for reading. That's fine for a mount that is
in a namespace. Everything above it is pinned by that namespace.

STATMOUNT_BY_FD also accepts a file descriptor on a mount that has
been unmounted on purpose and that only the file descriptor keeps alive.
If that mount stayed attached to its parent when it was unmounted the
parent is unmounted as well and nothing pins it for the child.

The final mntput() unmounts the children under mount_lock alone and
frees the parent afterwards. Concurrently, statmount_mnt_basic() reads
m->mnt_parent twice while that can happen and can easily dereference a
mount that's already gone.

Read the parent of an unmounted mount under mount_lock. The parent
can't be put while it is held and both ids come from the same mount. A
mounted mount's parent is pinned by the namespace and a mount can't
leave its namespace while namespace_sem is held, so the common case
takes no global lock.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
