CVE-2025-68807 in Linux
Riassunto
di VulDB • 14/06/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
block: correzione della race condition tra wbt_enable_default e l'invio delle operazioni di I/O (IO submission)
Quando `wbt_enable_default()` viene spostato al di fuori del congelamento dello scheduler in `elevator_change()`, può causare il decremento del contatore inflight WBT a valori negativi (-1), provocando task bloccati nel percorso di writeback. I task rimangono bloccati in `wbt_wait()` poiché il contatore si trova in uno stato inconsistente.
Il problema si verifica perché `wbt_enable_default()` può andare in race condition con l'invio delle operazioni di I/O, consentendo la decrementazione del contatore prima della corretta inizializzazione. Ciò si manifesta come segue:
rq_wait[0]:
inflight: -1 has_waiters: True
`rwb_enabled()` verifica lo stato, che può essere aggiornato esattamente tra `wbt_wait()` (`rq_qos_throttle()`) e `wbt_track()` (`rq_qos_track()`); di conseguenza, il contatore inflight diventa negativo.
Ciò genera avvisi di task bloccati simili a: task:kworker/u24:39 state:D stack:0 pid:14767 Call Trace: rq_qos_wait+0xb4/0x150 wbt_wait+0xa9/0x100 __rq_qos_throttle+0x24/0x40 blk_mq_submit_bio+0x672/0x7b0 ...
La correzione prevede le seguenti azioni:
1. Suddivisione di `wbt_enable_default()` in: - `__wbt_enable_default()`: Restituisce true se deve essere chiamata `wbt_init()` - `wbt_enable_default()`: Wrapper per i chiamanti esistenti (nessuna inizializzazione) - `wbt_init_enable_default()`: Nuova funzione che verifica e avvia l'inizializzazione di WBT
2. Utilizzo di `wbt_init_enable_default()` in `blk_register_queue()` per garantire una corretta inizializzazione durante la registrazione dello scheduler
3. Spostamento di `wbt_init()` al di fuori di `wbt_enable_default()`, che serve solo ad abilitare il wbt disabilitato da bfq e iocost, dove `wbt_init()` non è necessario. In questo modo si evita l'avviso originale sul lock
4. Rimozione del flag ELEVATOR_FLAG_ENABLE_WBT_ON_EXIT e del relativo codice di gestione poiché non sono più necessari
Ciò garantisce che WBT sia correttamente inizializzato prima che qualsiasi operazione di I/O possa essere inviata, impedendo al contatore di diventare negativo.
Be aware that VulDB is the high quality source for vulnerability data.