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

9p: skip nlink update in cacheless mode to fix WARN_ON

v9fs_dec_count() unconditionally calls drop_nlink() on regular files,
even when the inode's nlink is already zero. In cacheless mode the
client refetches inode metadata from the server (the source of truth)
on every operation, so by the time v9fs_remove() returns, the locally
cached nlink may already reflect the post-unlink value:

1. Client initiates unlink, server processes it and sets nlink to 0
2. Client refetches inode metadata (nlink=0) before unlink returns
3. Client's v9fs_remove() completes successfully
4. Client calls v9fs_dec_count() which calls drop_nlink() on nlink=0

This race is easily triggered under heavy unlink workloads, such as
stress-ng's unlink stressor, producing the following warning:

WARNING: fs/inode.c:417 at drop_nlink+0x4c/0xc8
Call trace:
drop_nlink+0x4c/0xc8
v9fs_remove+0x1e0/0x250 [9p]
v9fs_vfs_unlink+0x20/0x38 [9p]
vfs_unlink+0x13c/0x258
...

In cacheless mode the server is authoritative and the inode is on its
way out, so locally adjusting nlink buys nothing. Skip v9fs_dec_count()
entirely when neither CACHE_META nor CACHE_LOOSE is set, which both
avoids the warning and removes a class of nlink races (two concurrent
unlinkers observing nlink > 0 and both calling drop_nlink()) that an
nlink == 0 guard alone would only narrow rather than close.
Published: 2026-08-15
Score: 7.8 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The 9p client in the Linux kernel contains a race condition in its reference‑count handling. When the client operates in cacheless mode, a file that has just been unlinked may have its inode metadata refetched from the server with a zero link count before the local unlink operation finishes. The kernel then calls drop_nlink on an inode that already has a zero link count, which triggers a warning. According to the description, repeated unlink operations under heavy load can produce the warning, and the race might lead to confusing inode state. This flaw does not provide code execution; it may destabilise the file system and cause inconsistent inode information.

Affected Systems

All Linux kernel releases that contain the 9p virtual filesystem and have not incorporated the commit that removes the unconditional drop_nlink call are affected. This includes the standard kernels provided by major distributions such as Ubuntu, Red Hat, Debian, and others that ship the in‑kernel 9p implementation.

Risk and Exploitability

The CVSS score of 7.8 indicates a moderate severity, while the EPSS score of <1% signals a very low exploitation probability. The flaw is not listed in the CISA KEV catalog. According to the description, the race can be triggered by local users performing many unlink operations on a 9p mount configured in cacheless mode; it does not appear to provide a remote code‑execution vector. The risk therefore lies primarily with stability rather than confidentiality or integrity, and the likely attack vector is local workload manipulation.

Generated by OpenCVE AI on August 22, 2026 at 09:54 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the kernel patch that removes the unconditional drop_nlink call when operating in cacheless mode (e.g., pull the commit 574aa0b4799470ac8 or any later kernel that contains the fix).
  • If a kernel upgrade is not immediately possible, reconfigure 9p mounts to use cacheful mode or disable the CACHE_META and CACHE_LOOSE flags to avoid the race.
  • After applying the patch or reconfiguration, monitor system logs for the warning message WARNING: fs/inode.c:417 drop_nlink to confirm the issue is resolved.

Generated by OpenCVE AI on August 22, 2026 at 09:54 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sun, 23 Aug 2026 13:15:00 +0000


Wed, 19 Aug 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-367
References
Metrics threat_severity

None

threat_severity

Moderate


Mon, 17 Aug 2026 17:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362
CWE-399

Mon, 17 Aug 2026 06:00:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 7.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}


Sat, 15 Aug 2026 21:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362
CWE-399

Sat, 15 Aug 2026 06:00:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: 9p: skip nlink update in cacheless mode to fix WARN_ON v9fs_dec_count() unconditionally calls drop_nlink() on regular files, even when the inode's nlink is already zero. In cacheless mode the client refetches inode metadata from the server (the source of truth) on every operation, so by the time v9fs_remove() returns, the locally cached nlink may already reflect the post-unlink value: 1. Client initiates unlink, server processes it and sets nlink to 0 2. Client refetches inode metadata (nlink=0) before unlink returns 3. Client's v9fs_remove() completes successfully 4. Client calls v9fs_dec_count() which calls drop_nlink() on nlink=0 This race is easily triggered under heavy unlink workloads, such as stress-ng's unlink stressor, producing the following warning: WARNING: fs/inode.c:417 at drop_nlink+0x4c/0xc8 Call trace: drop_nlink+0x4c/0xc8 v9fs_remove+0x1e0/0x250 [9p] v9fs_vfs_unlink+0x20/0x38 [9p] vfs_unlink+0x13c/0x258 ... In cacheless mode the server is authoritative and the inode is on its way out, so locally adjusting nlink buys nothing. Skip v9fs_dec_count() entirely when neither CACHE_META nor CACHE_LOOSE is set, which both avoids the warning and removes a class of nlink races (two concurrent unlinkers observing nlink > 0 and both calling drop_nlink()) that an nlink == 0 guard alone would only narrow rather than close.
Title 9p: skip nlink update in cacheless mode to fix WARN_ON
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-08-23T12:46:59.271Z

Reserved: 2026-08-09T03:40:39.910Z

Link: CVE-2026-72170

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-15T06:21:35.100

Modified: 2026-08-23T13:16:41.387

Link: CVE-2026-72170

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-08-15T00:00:00Z

Links: CVE-2026-72170 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-22T10:00:07Z

Weaknesses
  • CWE-367

    Time-of-check Time-of-use (TOCTOU) Race Condition