HIGH
net/smc ULP UAF
CVE-2026-46330
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
01Description
In the Linux kernel, the following vulnerability has been resolved: Revert "net/smc: Introduce TCP ULP support" This reverts commit d7cd421da9da2cc7b4d25b8537f66db5c8331c40. As reported by Al Viro, the TCP ULP support for SMC is fundamentally broken. The implementation attempts to convert an active TCP socket into an SMC socket by modifying the underlying `struct file`, dentry, and inode in-place, which violates core VFS invariants that assume these structures are immutable for an open file, creating a risk of use after free errors and general system instability. Given the severity of this design flaw and the fact that cleaner alternatives (e.g., LD_PRELOAD, BPF) exist for legacy application transparency, the correct course of action is to remove this feature entirely.
02KernelScan AI Analysis
Risk summary
Local users with low privileges can trigger use-after-free vulnerabilities by exploiting the SMC TCP ULP feature that improperly modifies VFS structures in-place. This can lead to kernel memory corruption, privilege escalation, or system crashes on systems where SMC networking is enabled.
Vulnerability analysis
The vulnerability stems from the SMC TCP ULP implementation that attempts to convert active TCP sockets into SMC sockets by directly modifying struct file, dentry, and inode objects in-place. This violates fundamental VFS invariants that assume these structures remain immutable for open files. The smc_ulp_init() function performs dangerous operations like 'smcsock->file->f_inode = SOCK_INODE(smcsock)' and 'smcsock->file->f_path.dentry->d_inode = SOCK_INODE(smcsock)', creating race conditions where other kernel subsystems may access freed or corrupted memory. The fix completely removes the TCP ULP support by reverting the entire feature, eliminating the unsafe VFS manipulation. This is locally exploitable through the TCP_ULP setsockopt() interface, requiring only basic socket privileges.
03Fix Versions
| Branch | Fixed in | Patch commit |
|---|---|---|
| 6.19 | 6.19.4 | 6c505d95c69e |
| mainline | 7.0 | df31a6b0a305 |