CVE-2026-98803

Source
https://cve.org/CVERecord?id=CVE-2026-98803
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-98803.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-98803
Downstream
Published
2026-10-18T15:48:50Z
Modified
2026-10-19T02:47:25Z
Summary
net: stmmac: fix rx Scatter-Gather support
Details

In the Linux kernel, the following vulnerability has been resolved:

net: stmmac: fix rx Scatter-Gather support

When a received frame is larger than dma_buf_sz, the DMA scatters it across multiple RX descriptors (rx Scatter-Gather). The secondary RX buffer (sec_page) was only allocated and programmed when split-header (SPH) was active, so for regular frames buffer2 was neither allocated nor backed by a valid mapping. As soon as an incoming frame overflowed buffer1, the DMA wrote the overflow into the unmapped secondary-buffer address, triggering an SMMU translation fault on IOMMU-based platforms:

arm-smmu 15000000.iommu: Unhandled context fault: fsr=0x402, iova=0x00000000, fsynr=0x7f0011, cbfrsynra=0x1c90, cb=11 arm-smmu 15000000.iommu: FSR = 00000402 [Format=2 TF], SID=0x1c90 arm-smmu 15000000.iommu: FSYNR0 = 007f0011 [S1CBNDX=127 WNR PLVL=1]

Enable scatter-gather for non-SPH frames on cores that can program an independent secondary RX buffer (GMAC4/XGMAC): allocate and mark buffer2 as valid in stmmac_init_rx_buffers() and stmmac_rx_refill(), and account for it in the buffer length computation. Legacy cores have no set_sec_addr op, so they keep buffer2 disabled.

Since buffer2 is handed to the DMA at page offset 0, the page pool sync window is widened to cover both buffers in every mode: offset is set to 0 and max_len to dma_buf_sz + stmmac_rx_offset().

The FCS can straddle the buffer1/buffer2 boundary and a descriptor boundary, so it is now stripped from the tail of the assembled frame with pskb_trim() instead of from a single buffer, avoiding an unsigned underflow for frames that overflow a buffer by 1..3 bytes. For single-buffer frames the XDP program must not see the FCS, so it is removed from the XDP buffer before the program runs.

Native XDP currently only supports single-buffer (linear) frames. An oversized frame accepted by the MAC (jumbo enabled) is received via buffer2; the XDP program only sees buffer1, so on a TX/REDIRECT verdict the frame is forwarded truncated. XDP multi-buffer support to handle this case is planned as a follow-up.

AF_XDP zero-copy RX is not covered by this change: a ZC queue still programs buffer2 at DMA address 0 (and XGMAC has no buffer2-valid bit), so an oversized frame overflowing buffer1 can still trigger the same SMMU translation fault. Handling is planned as a follow-up.

Database specific
{
    "cna_assigner":  "Linux",
    "osv_generated_from":  "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/98xxx/CVE-2026-98803.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
88ebe2cf7f3fc9da95e0f06483fd58da3e67e675
Fixed
358d5ac5a5d57ce21c3814c4e3e8f3fbcb7304b4
Fixed
a7cff44543f66f3a19151060cb549691d191d44c
Fixed
88095728511e0df9c89528944f5a1762ad298983
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
5.4.262
Fixed
5.5
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
c4b712d1a814a0535091d99e6cf04d69ac42ef7b

Affected versions

v5.*
v5.4.262
v5.4.263
v5.4.264
v5.4.265
v5.4.266
v5.4.267
v5.4.268
v5.4.269
v5.4.270
v5.4.271
v5.4.272
v5.4.273
v5.4.274
v5.4.275
v5.4.276
v5.4.277
v5.4.278
v5.4.279
v5.4.280
v5.4.281
v5.4.282
v5.4.283
v5.4.284
v5.4.285
v5.4.286
v5.4.287
v5.4.288
v5.4.289
v5.4.290
v5.4.291
v5.4.292
v5.4.293
v5.4.294
v5.4.295
v5.4.296
v5.4.297
v5.4.298
v5.4.299
v5.4.300
v5.4.301
v5.4.302

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-98803.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
5.5.0
Fixed
6.18.56
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
7.2.10

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-98803.json"