Odebrany

CVE-2026-98803

opublikowano:
modyfikacja:
Ocena CVSS
n/a
Brak oceny

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

W jądrze Linuksa usunięto następującą lukę:

net: stmmac: napraw obsługę rx Scatter-Gather

Kiedy odebrana ramka jest większa niż dma_buf_sz, DMA ją rozprasza
w wielu deskryptorach RX (rx Scatter-Gather). Drugi RX
bufor (sec_page) został przydzielony i zaprogramowany tylko przy dzielonym nagłówku
(SPH) był aktywny, więc dla zwykłych ramek nie został przydzielony bufor2
ani poparte prawidłowym mapowaniem. Gdy tylko nadchodząca ramka zostanie przepełniona
bufor1, DMA zapisał przepełnienie w niezamapowanym buforze pomocniczym
adres, powodując błąd tłumaczenia SMMU na platformach opartych na IOMMU:

arm-smmu 15000000.iommu: Nieobsługiwany błąd kontekstu: 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]

Włącz zbieranie rozproszenia dla ramek innych niż SPH na rdzeniach, które mogą programować
niezależny dodatkowy bufor RX (GMAC4/XGMAC): przydziel i zaznacz bufor2
tak samo jak w stmmac_init_rx_buffers() i stmmac_rx_refill() oraz koncie
dla niego w obliczeniach długości bufora. Starsze rdzenie nie mają set_sec_addr
op, więc bufor 2 jest wyłączony.

Ponieważ bufor2 jest przekazywany do DMA przy przesunięciu strony 0, synchronizacja puli stron
okno jest poszerzane, aby objąć oba bufory w każdym trybie: offset jest ustawiony na 0
i max_len do dma_buf_sz + stmmac_rx_offset().

FCS może znajdować się na granicy bufor1/bufor2 i deskryptorze
granicę, więc jest teraz usuwany z ogona zmontowanej ramy
pskb_trim() zamiast z pojedynczego bufora, co pozwala uniknąć niedopełnienia bez znaku
dla ramek, które przekraczają bufor o 1..3 bajtów. Do ramek z jednym buforem
program XDP nie może widzieć FCS, dlatego jest usuwany z bufora XDP
przed uruchomieniem programu.

Natywny XDP obsługuje obecnie tylko ramki z jednym buforem (liniowe). An
ponadwymiarowa ramka akceptowana przez MAC (włączona obsługa Jumbo) jest odbierana przez
bufor2; program XDP widzi tylko bufor 1, więc werdykt TX/REDIRECT
ramka jest przesyłana obcięta. Obsługa wielu buforów XDP
sprawa ta jest planowana jako kontynuacja.

Ta zmiana nie obejmuje RX z kopią zerową AF_XDP: kolejka ZC nadal
programuje bufor 2 pod adresem DMA 0 (a XGMAC nie ma bitu ważnego dla bufora 2),
więc zbyt duża ramka przepełniająca bufor1 może nadal wywołać to samo
Błąd tłumaczenia SMMU. W ramach działań następczych planowana jest obsługa.

>_ Referencje

Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.

This product uses the NVD API but is not endorsed or certified by the NVD.

Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.

CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.

NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org