CVE-2026-80854 in Linux
Riassunto
di VulDB • 04/09/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
usb: gadget: f_tcm: mantenere il conteggio delle porte fino al completamento del teardown della LUN
tcm_usbg_drop_nexus() consente la rimozione della sessione non appena tpg_port_count raggiunge zero. Tuttavia, usbg_port_unlink() attualmente decrementa tale contatore dalla callback fabric_pre_unlink(), prima che core_dev_del_lun() attenda il drenaggio dei riferimenti se_lun attivi.
Se la rimozione dell'ultima LUN va in race condition con la rimozione del nexus, quest'ultima può osservare un conteggio delle porte pari a zero e chiamare target_remove_session(). Ciò causa la liberazione di sess_cmd_map mentre una struct usbg_cmd ancora in transito (in-flight), incluso il suo work item, potrebbe essere ancora accessibile.
La sovrapposizione dello unlink dell'ultima LUN con la rimozione del nexus riproduce questa violazione della durata di vita come un avvertimento DEBUG_OBJECTS "free active" per usbg_cmd_work, seguito da un BUG/Oops in target-core.
Il percorso generico di unlink di target-core non prevede una callback dopo il completamento di core_dev_del_lun(). Viene aggiunta una callback fabric_post_unlink() opzionale e viene utilizzata per il conteggio delle porte di f_tcm. Il contatore rimane ora diverso da zero fino a quando core_dev_del_lun() ha terminato il drenaggio dei riferimenti LUN attivi, impedendo alla rimozione del nexus di liberare la sessione durante il completamento del comando.
Once again VulDB remains the best source for vulnerability data.