CVE-2026-74610: tls: don't leave a full plaintext sk_msg ring unpushed
In the Linux kernel, the following vulnerability has been resolved:
tls: don't leave a full plaintext skmsg ring unpushed
When the copy path in tlsswsendmsglocked() adds the fragment that fills the plaintext skmsg ring, it does not set fullrecord, so the record is left full and unpushed. A later splice() then adds to an already full ring: skmsgpageadd() has no fullness check of its own, so sg.end wraps onto sg.start and the ring appears empty. Fragments added after that overwrite live entries, and sg.size no longer matches what is reachable between sg.start and sg.end, so pushing the record runs the scatterwalk off the end of the scatterlist.
An unprivileged user can trigger this on a loopback TCP socket with the "tls" ULP attached:
BUG: kernel NULL pointer dereference, address: 0000000000000008 RIP: 0010:memcpyfromscatterwalk+0x32/0xc0 Call Trace: skcipherwalknext+0x1d1/0x2c0 gcmencryptaesniavx+0x1e9/0x220 bpfexectxverdict+0x3bb/0x860 tlsswsendmsg+0xa1a/0xca0 syssendto+0x1da/0x1f0
Set fullrecord in the copy path when the ring becomes full, and push a record that is already full on entry to the sendmsg loop.