KernelScan.io

HIGH Introduced in 6.16

tcp DevmemTx Bypass

CVE-2026-90051

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.8HIGH

01

In the Linux kernel, the following vulnerability has been resolved: tcp: reject non zerocopy devmem tx Devmem tcp tx doesn't work without zero-copy, however it's not currently enforced if NETIF_F_SG isn't present. In this case, tcp_sendmsg_locked() will try the copy path and try to copy data from an iovec which consists of offsets into the dma-buf and would normally fail. Moreover, d9c56501c72fd ("net: tcp: block mixing readable and unreadable frags") relies on that and assumes that the devmem binding is present IFF we're using the zero-copy path, which can be used to mix net-iov and pages in a single skb, and break invariants. Let's reject devmem tx without zero-copy. Note, the parameter check the patch is modifying is too loose, we can create an io_uring request with dmabuf_id and all ZC flags, but which won't have the binding. We replace it with stricter validation.

02

Engine v0.6.0

Risk summary

A local user can bypass TCP devmem zero-copy validation, causing the kernel to attempt to copy data from device-memory offsets. This can lead to memory corruption or kernel crashes by mixing incompatible memory types in network buffers, breaking internal invariants.

Affectednet/ipv4/tcp.c (TCP transmit path)

Vulnerability analysis

The TCP devmem transmit path fails to properly reject requests that supply a device memory identifier without genuine zero-copy bindings, allowing a caller to bypass the intended validation. This causes the kernel to attempt copying data from device memory offsets as if they were normal memory, which can corrupt internal network buffer structures by mixing incompatible memory types. The fix tightens the parameter check so that devmem transmit is rejected unless the zero-copy path and a valid binding are actually in use. This is reachable by a local process using asynchronous I/O or sockets with zero-copy and devmem options, requiring no special privileges beyond a standard local account.

03

BranchIntroducedFixed inPatch commit
6.186.166.18.522151b2bcf6fc
7.26.167.2.6b04326c7927a
mainline6.167.3-rc3125755776bc6