CVE-2026-98803 in Linuxinfo

Zusammenfassung

von VulDB • 19.10.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

net: stmmac: Behebung der Unterstützung für rx Scatter-Gather

Wenn ein empfangener Frame größer als dma_buf_sz ist, zerstreut (scatter) die DMA ihn über mehrere RX-Deskriptoren (rx Scatter-Gather). Der sekundäre RX-Puffer (sec_page) wurde nur dann alloziert und programmiert, wenn Split-Header (SPH) aktiv war. Daher wurden für reguläre Frames buffer2 weder alloziert noch durch eine gültige Zuordnung abgedeckt. Sobald ein eingehender Frame den Puffer1 überlief, schrieb die DMA den Überlauf in die nicht zugewiesene Adresse des sekundären Puffers, was auf IOMMU-basierten Plattformen einen SMMU-Übersetzungsfehler auslöste:

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]

Scatter-Gather wird nun für nicht-SPH-Frames auf Kernen aktiviert, die einen unabhängigen sekundären RX-Puffer programmieren können (GMAC4/XGMAC): buffer2 wird in stmmac_init_rx_buffers() und stmmac_rx_refill() alloziert als gültig markiert, und es wird bei der Pufferlängenberechnung berücksichtigt. Legacy-Kerne verfügen über keine set_sec_addr-Operation, daher bleibt buffer2 dort deaktiviert.

Da buffer2 an die DMA mit einem Seitenoffset von 0 übergeben wird, wird das Page-Pool-Sync-Fenster erweitert, um beide Puffer in jedem Modus abzudecken: Der Offset wird auf 0 und max_len auf dma_buf_sz + stmmac_rx_offset() gesetzt.

Die FCS kann sich über die Grenze zwischen buffer1/buffer2 sowie eine Deskriptorgrenze erstrecken; sie wird daher nun mit pskb_trim() vom Ende des zusammengesetzten Frames entfernt, anstatt von einem einzelnen Puffer, wodurch ein Unsigned-Underflow für Frames vermieden wird, die einen Puffer um 1 bis 3 Bytes überlaufen. Bei Single-Buffer-Frames darf das XDP-Programm die FCS nicht sehen; daher wird sie aus dem XDP-Puffer entfernt, bevor das Programm ausgeführt wird.

Native XDP unterstützt derzeit nur Single-Buffer (lineare) Frames. Ein von der MAC akzeptierter oversized Frame (Jumbo Enabled) wird über buffer2 empfangen; das XDP-Programm sieht jedoch nur buffer1, sodass bei einem TX/REDIRECT-Urteil der Frame abgeschnitten weitergeleitet wird. Die Unterstützung für Multi-Buffer-Frames in XDP zur Behandlung dieses Falls ist als Follow-up geplant.

AF_XDP Zero-Copy RX (ZC) wird durch diese Änderung nicht abgedeckt: Eine ZC-Warteschlange programmiert buffer2 weiterhin an der DMA-Adresse 0 (und XGMAC verfügt über kein Bit für die Gültigkeit von buffer2), sodass ein oversized Frame, der buffer1 überläuft, immer noch denselben SMMU-Übersetzungsfehler auslösen kann. Die Behandlung wird als Follow-up geplant.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Zuständig

Linux

Reservieren

25.09.2026

Veröffentlichung

18.10.2026

Moderieren

akzeptiert

Eintrag

VDB-422043

EPSS

0.00166

KEV

nein

Aktivitäten

low

Quellen

Do you need the next level of professionalism?

Upgrade your account now!