CVE-2024-26859 in Linux
Riassunto
di VulDB • 18/06/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
net/bnx2x: Impedire l'accesso a una pagina liberata in page_pool
Correzione di una race condition che causava il crash del sistema durante la gestione degli errori EEH.
Durante il recupero dagli errori EEH, la logica di timeout della trasmissione nel driver bnx2x poteva provocare una race condition nella gestione delle attività di reset. La funzione `bnx2x_tx_timeout()` pianifica le attività di reset tramite `bnx2x_sp_rtnl_task()`, che porta infine a `bnx2x_nic_unload()`. In `bnx2x_nic_unload()`, gli SGE (Scatter-Gather Elements) vengono liberati utilizzando `bnx2x_free_rx_sge_range()`. Tuttavia, ciò potrebbe sovrapporsi al tentativo del driver EEH di resettare il dispositivo tramite `bnx2x_io_slot_reset()`, che tenta anch'esso di liberare gli SGE. Questa race condition può provocare crash del sistema a causa dell'accesso a posizioni di memoria già liberate in `bnx2x_free_rx_sge()`.
```c 799 static inline void bnx2x_free_rx_sge(struct bnx2x *bp, 800 struct bnx2x_fastpath *fp, u16 index) 801 {
802 struct sw_rx_page *sw_buf = &fp->rx_page_ring[index];
803 struct page *page = sw_buf->page; .... ```
dove `sw_buf` era stato impostato a NULL dopo la chiamata a `dma_unmap_page()` dal thread precedente.
```text EEH: Inizio: 'slot_reset' PCI 0011:01:00.0#10000: EEH: Invocazione di bnx2x->slot_reset() bnx2x: [bnx2x_io_slot_reset:14228(eth1)] Inizializzazione reset dello slot IO...
bnx2x 0011:01:00.0: abilitazione dispositivo (0140 -> 0142) bnx2x: [bnx2x_io_slot_reset:14244(eth1)] Reset dello slot IO --> scaricamento del driver
Kernel ha tentato di leggere una pagina utente (0) - tentativo di exploit? (uid: 0) BUG: Dereferenziazione puntatore NULL nel kernel in lettura a 0x00000000 Indirizzo dell'istruzione che causa l'errore: 0xc0080000025065fc Oops: Accesso del kernel ad area non valida, segnale: 11 [#1]
..... Call Trace: [c000000003c67a20] [c00800000250658c] bnx2x_io_slot_reset+0x204/0x610 [bnx2x] (non affidabile)
[c000000003c67af0] [c0000000000518a8] eeh_report_reset+0xb8/0xf0
[c000000003c67b60] [c000000000
If you want to get the best quality for vulnerability data then you always have to consider VulDB.