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

smb: client: fix busy dentry warning on unmount after DIO

Commit c68337442f03 ("cifs: Fix busy dentry used after unmounting") fixed
the issue in cifs where deferred close of a file led to a dentry reference
count not being released in umount, by flushing deferredclose_wq in
cifs_kill_sb() to solve it.

However, the cifs DIO path suffers from the same busy-dentry problem caused
by a delayed dentry reference-count release:

[dio] [cifsd] [close + umount]
netfs_unbuffered_write_iter_locked
...
cifs_demultiplex_thread
netfs_unbuffered_write
cifs_issue_write
netfs_wait_for_in_progress_stream [1]
...
netfs_write_subrequest_terminated
netfs_subreq_clear_in_progress
netfs_wake_collector // wake [1]
netfs_put_subrequest
netfs_put_request
queue_work(system_dfl_wq, xxx) [2]
// dio write return cifs_close
_cifsFileInfo_put
// cfile->count 2->1
--cfile->count [3]

// umount
cifs_kill_sb
kill_anon_super
// warning triggered!
shrink_dcache_for_umount [4]
[system_dfl_wq] [5]
netfs_free_request
...
_cifsFileInfo_put
// cfile->count 1->0
--cfile->count
queue_work(fileinfo_put_wq, xxx)

[fileinfo_put_wq] [6]
cifsFileInfo_put_work
cifsFileInfo_put_final
dput

If the umount path is triggered before [5], it results warning:
BUG: Dentry 00000000eab1f070{i=9a917b66ae404fec,n=test} still in use (1)
[unmount of cifs cifs]

The existing per-inode ictx->io_count wait in cifs_evict_inode() does not
help: it lives in the inode eviction path, which runs after
shrink_dcache_for_umount() has already warned about the busy dentries.

Fix it by adding a per-superblock outstanding-rreq counter that is
incremented in cifs_init_request() and decremented in cifs_free_request().
In cifs_kill_sb(), before kill_anon_super(), wait for this counter to reach
0 - which guarantees that all cleanup_work for this sb have run and thus
all relevant cfile puts are queued on fileinfo_put_wq or serverclose_wq.
Then drain the workqueue so the dentry refs are dropped.

This is a targeted wait, not a flush of the system-wide system_dfl_wq.
Published: 2026-08-15
Score: 7.8 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability resides in the CIFS SMB client of the Linux kernel. A race condition exists between the deferred close of a file during direct‑I/O writes and the unmount routine. When an unmount occurs before the deferred close completes, a dentry reference remains, triggering a BUG warning about a busy dentry. This misuse of a reference count and failure to release resources in a timely manner can lead to kernel instability or a crash, potentially forcing a system reboot and disrupting availability.

Affected Systems

All Linux kernel builds that include the CIFS client and lack commit c68337442f03 or later are affected. The exact version range is not specified in the CNA data, but distribution kernels published prior to that commit or custom kernels retaining the original CIFS implementation are vulnerable. The error is triggered only when a CIFS share is mounted with the dio (direct‑I/O) option and a write operation occurs before unmounting. Shares mounted without dio or on filesystems other than CIFS are not impacted.

Risk and Exploitability

The CVSS score of 7.8 indicates high severity, while the EPSS score of < 1% reflects a very low exploitation probability. The likely attack vector is local privileged access that allows the attacker to mount a CIFS share with dio, perform a write, and then unmount before the deferred close work has drained. Exploitation requires precise timing and is constrained to systems where this specific sequence occurs. If successful, the race can trigger a kernel panic or forced reboot, compromising system availability.

Generated by OpenCVE AI on August 22, 2026 at 08:40 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Deploy a kernel that includes commit c68337442f03 or later, which adds a per-superblock counter to ensure all pending CIFS work is finished before unmounting.
  • If an immediate kernel upgrade is not possible, postpone unmounting of CIFS shares that have performed direct‑I/O writes; wait until deferred close work has drained, or run a sync before umounting.
  • Avoid mounting CIFS shares with the dio option; use standard buffered mode to eliminate the race condition leading to the busy dentry warning.

Generated by OpenCVE AI on August 22, 2026 at 08:40 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 22 Aug 2026 07:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-635
CWE-766
CWE-772

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


Mon, 17 Aug 2026 21:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-635
CWE-766
CWE-772

Mon, 17 Aug 2026 19:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416
CWE-668

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 10:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416
CWE-668

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

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: smb: client: fix busy dentry warning on unmount after DIO Commit c68337442f03 ("cifs: Fix busy dentry used after unmounting") fixed the issue in cifs where deferred close of a file led to a dentry reference count not being released in umount, by flushing deferredclose_wq in cifs_kill_sb() to solve it. However, the cifs DIO path suffers from the same busy-dentry problem caused by a delayed dentry reference-count release: [dio] [cifsd] [close + umount] netfs_unbuffered_write_iter_locked ... cifs_demultiplex_thread netfs_unbuffered_write cifs_issue_write netfs_wait_for_in_progress_stream [1] ... netfs_write_subrequest_terminated netfs_subreq_clear_in_progress netfs_wake_collector // wake [1] netfs_put_subrequest netfs_put_request queue_work(system_dfl_wq, xxx) [2] // dio write return cifs_close _cifsFileInfo_put // cfile->count 2->1 --cfile->count [3] // umount cifs_kill_sb kill_anon_super // warning triggered! shrink_dcache_for_umount [4] [system_dfl_wq] [5] netfs_free_request ... _cifsFileInfo_put // cfile->count 1->0 --cfile->count queue_work(fileinfo_put_wq, xxx) [fileinfo_put_wq] [6] cifsFileInfo_put_work cifsFileInfo_put_final dput If the umount path is triggered before [5], it results warning: BUG: Dentry 00000000eab1f070{i=9a917b66ae404fec,n=test} still in use (1) [unmount of cifs cifs] The existing per-inode ictx->io_count wait in cifs_evict_inode() does not help: it lives in the inode eviction path, which runs after shrink_dcache_for_umount() has already warned about the busy dentries. Fix it by adding a per-superblock outstanding-rreq counter that is incremented in cifs_init_request() and decremented in cifs_free_request(). In cifs_kill_sb(), before kill_anon_super(), wait for this counter to reach 0 - which guarantees that all cleanup_work for this sb have run and thus all relevant cfile puts are queued on fileinfo_put_wq or serverclose_wq. Then drain the workqueue so the dentry refs are dropped. This is a targeted wait, not a flush of the system-wide system_dfl_wq.
Title smb: client: fix busy dentry warning on unmount after DIO
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-17T05:42:41.932Z

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

Link: CVE-2026-72315

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-15T06:22:04.367

Modified: 2026-08-17T06:18:34.743

Link: CVE-2026-72315

cve-icon Redhat

Severity : Low

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

Links: CVE-2026-72315 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-22T08:45:03Z

Weaknesses
  • CWE-911

    Improper Update of Reference Count