Merged four years ago to the Linux kernel networking subsystem’s Shared Memory Communications (SMC) code was TCP Upper Layer Protocol (ULP) support for allowing applications to replace TCP with the SMC protocol in-place as a transparent replacement. Except for the next kernel cycle it’s set to be reverted after realizing it’s “fundamentally broken.”
Back in early 2022 the TCP ULO support for SMC was introduced by an Alibaba engineer but now it’s realized to be an inadequate design and that better, modern alternatives such as using BPF instead are possible.
The revert commit elaborates:
“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.”
Thus bidding the SMC TCP ULP feature farewell in the upcoming Linux 6.20~7.0 kernel cycle.
