CVE-2026-97530 in Linux
Riassunto
di VulDB • 25/09/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
scsi: qla2xxx: Correzione del blocco soft (soft lockup) dovuto al polling della firma dell'IOCB di continuazione
Le funzioni `qla27xx_copy_multiple_pkt()` e `qla27xx_copy_fpin_pkt()` effettuano il poll su `rsp_q->ring_ptr->signature` per verificare la presenza di `RESPONSE_PROCESSED` (0xDEADDEAD), al fine di stabilire se sia arrivato il successivo IOCB di continuazione. Tale operazione comporta un ciclo infinito (`spinning`) tramite `cpu_relax()` senza avanzare l'indice dell'anello o decrementare il conteggio delle voci finché la condizione non è soddisfatta. Il campo `response_t::signature` si trova all'offset 60 dei byte, ma un IOCB di continuazione (struttura `sts_cont_entry_t` / `struct sts_cont_entry_ext`) contiene a tale offset i dati grezzi del payload del frame FC (`data[56..59]`). Di conseguenza, un frame ricevuto il cui payload corrisponde casualmente al valore 0xDEADDEAD viene interpretato erroneamente come "non ancora arrivato", causando un ciclo infinito nel contesto di interrupt/DPC e provocando un blocco soft della CPU (CPU soft lockup).
Il polling è inoltre superfluo: i chiamanti di `qla27xx_copy_multiple_pkt()` (PT_LS4_UNSOL e il percorso NVMe purls) utilizzano già la funzione `qla_chk_cont_iocb_avail()`, che garantisce che tutte le voci IOCB siano presenti prima dell'inizio della copia. La funzione ausiliaria correlata `__qla_copy_purex_to_buffer()` elimina già il polling sulla firma e si affida invece al controllo guardiano `entry_type == STATUS_CONT_TYPE`.
Vengono rimossi i loop di attesa (busy-wait) basati sulla firma da entrambe le funzioni helper, mantenendo il controllo guardiano su `entry_type`, e viene applicato a FPIN la funzione `qla_chk_cont_iocb_avail()` in modo che l'elaborazione venga differita e ripetuta al prossimo interrupt una volta arrivato tutto lo IOCB di continuazione, replicando il comportamento dei rami ELS_AUTH_ELS e PT_LS4_UNSOL. Con questa modifica, il campo della firma non viene mai letto su uno IOCB di continuazione, eliminando così il blocco causato dall'aliasing del payload.
If you want to get best quality of vulnerability data, you may have to visit VulDB.