CVE-2026-98803 in Linuxinformazioni

Riassunto

di VulDB • 18/10/2026

Nel kernel Linux, è stata risolta la seguente vulnerabilità:

net: stmmac: correzione del supporto Scatter-Gather per RX (ricezione)

Quando un frame ricevuto supera le dimensioni di dma_buf_sz, il DMA lo frammenta su più descrittori RX (Scatter-Gather RX). Il buffer secondario RX (sec_page) veniva allocato e configurato solo quando era attivo l'SPH (Split-Header); pertanto, per i frame regolari, il buffer2 non veniva né allocato né associato a una mappatura valida. Non appena un frame in arrivo andava oltre la capacità del buffer1, il DMA scriveva l'eccesso nell'indirizzo del buffer secondario non mappato, innescando un errore di traduzione SMMU (SMMU translation fault) su piattaforme basate su IOMMU:

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

Abilitare lo scatter-gather per i frame non-SPH sui core in grado di programmare un buffer RX secondario indipendente (GMAC4/XGMAC): allocare e contrassegnare il buffer2 come valido in stmmac_init_rx_buffers() e stmmac_rx_refill(), e tenerne conto nel calcolo della lunghezza del buffer. I core legacy non dispongono dell'operazione set_sec_addr, quindi mantengono il buffer2 disabilitato.

Poiché il buffer2 viene passato al DMA con uno spostamento di pagina (page offset) pari a 0, la finestra di sincronizzazione dello page pool è stata ampliata per coprire entrambi i buffer in ogni modalità: l'offset è impostato su 0 e max_len su dma_buf_sz + stmmac_rx_offset().

La FCS può trovarsi al confine tra il buffer1 e il buffer2 e anche oltre un limite di descrittore; pertanto, ora viene rimossa dalla coda del frame assemblato tramite pskb_trim() invece che da un singolo buffer, evitando un underflow non firmato per i frame che superano la capacità di un buffer di 1..3 byte. Per i frame a buffer singolo il programma XDP non deve vedere la FCS; essa viene quindi rimossa dal buffer XDP prima dell'esecuzione del programma.

La modalità Native XDP supporta attualmente solo frame a buffer singolo (lineari). Un frame di dimensioni eccessive accettato dalla MAC (con jumbo enabled) viene ricevuto tramite buffer2; il programma XDP vede solo il buffer1, pertanto in caso di verdetto TX/REDIRECT il frame viene inoltrato tronco. Il supporto multi-buffer per XDP per gestire questo caso è previsto come sviluppo successivo.

La modalità AF_XDP zero-copy RX non è coperta da questa modifica: una coda ZC programma ancora il buffer2 all'indirizzo DMA 0 (e l'XGMAC non dispone di un bit "buffer2 valido"), quindi un frame di dimensioni eccessive che supera la capacità del buffer1 può comunque innescare lo stesso errore di traduzione SMMU. La gestione è prevista come sviluppo successivo.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Responsabile

Linux

Prenotare

25/09/2026

Divulgazione

18/10/2026

Moderazione

accettato

EPSS

0.00000

KEV

no

Attività

basso

Fonti

Do you know our Splunk app?

Download it now for free!