KernelScan.io

HIGH Introduced in 6.18

cifs Tcon UAF

CVE-2026-89641

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI7.5HIGH

01

In the Linux kernel, the following vulnerability has been resolved: cifs: clear tcon after cifsFileInfo_put() in cifs_file_set_size() When the else branch of cifs_file_set_size() finds a writable file handle via find_writable_file(), it borrows tcon and server from the handle's tlink, attempts the handle-based set_file_size() RPC, and then releases the handle with cifsFileInfo_put(). If set_file_size() fails, execution falls through to the path-based fallback, which reuses the borrowed tcon and server under the "if (tcon == NULL)" guard. Since tcon is not NULL at that point, the guard is skipped. If cifsFileInfo_put() dropped the last reference on a tlink that was already removed from the tlink tree (TCON_LINK_IN_TREE cleared, as happens during reconnection or session teardown), cifs_put_tlink() will have freed tcon; the subsequent set_path_size() call is then a use-after-free. Setting tcon = NULL after cifsFileInfo_put() causes the existing guard to take the cifs_sb_tlink() path, which acquires a fresh reference for the path-based operation or fails cleanly if the session is gone.

02

Engine v0.6.0

Risk summary

A local user with access to a CIFS-mounted filesystem can trigger a use-after-free in the CIFS client during file truncation when a reconnection or session teardown is in progress. This can lead to kernel memory corruption, potentially allowing privilege escalation or a system crash.

Affectedfs/smb/client/inode.c (cifs)

Vulnerability analysis

When a file truncation operation on a CIFS mount finds an existing writable handle, it borrows the transport connection pointer from that handle, attempts an RPC, and then releases the handle. If the RPC fails, the code falls through to a path-based fallback that reuses the borrowed pointer without checking whether it is still valid. If the handle release dropped the last reference to a connection that was already being torn down (as happens during reconnection or session teardown), the pointer has been freed and the fallback operates on stale memory. The fix clears the borrowed pointer after releasing the handle, forcing the fallback to acquire a fresh reference or fail cleanly. The vulnerable path is reachable from any local process that can perform file operations on a mounted CIFS share, requiring no special privileges beyond filesystem access.

03

BranchIntroducedFixed inPatch commit
6.186.186.18.504f18c9e7ee46
7.26.187.2.44bea15d9c768
mainline6.187.3-rc1b96db32fed8d