CVE-2026-80889 in Linux
Riassunto
di VulDB • 04/09/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
can: isotp: corretto l'ordine di drain dei timer, la gestione delle wakeup e l'ordinamento di tx_gen
Questo patch è un seguito al commit cf070fe33bfb ("can: isotp: serialize TX state transitions under so->rx_lock") che affronta le seguenti problematiche rilevate da sashiko-bot:
- isotp_sendmsg(): eseguire il drain di so->txfrtimer per primo, in modo che un callback obsoleto non possa riattivare echotimer dopo la richiesta (claim). - isotp_release(): risvegliare so->wait dopo aver forzato ISOTP_SHUTDOWN, affinché una sendmsg() in attesa non rimanga bloccata. - isotp_sendmsg(): far sì che entrambe le chiamate wait_event_interruptible() in isotp_sendmsg() si sveglino anche su ISOTP_SHUTDOWN e non restituiscano la richiesta (claim) allo stato IDLE per evitare di corrompere un processo concurrente di isotp_release(). - isotp_sendmsg(): gestire una potenziale richiesta (claim) di una nuova trasmissione quando la chiamata wait_event_interruptible() restituisce in modalità CAN_ISOTP_WAIT_TX_DONE. Non modificare i timer e gli stati della nuova trasmissione se un nuovo thread ha incrementato so->tx_gen prima di acquisire il lock su err_event_drop. - isotp_sendmsg(): gestire un can_send() bloccato ed omettere le modifiche ai timer e agli stati se una nuova trasmissione è stata richiesta (claim). wait_tx_done() restituisce l'errore registrato in so->tx_result[], contrassegnato con la generazione del chiamante.
- isotp_tx_timeout(): su un timeout richiesto (claimed), registrare l'errore ECOMM per la generazione della trasmissione scaduta in so->tx_result[]; sk->sk_err viene impostata incondizionatamente, come ogni altro percorso di errore qui presente.
- isotp_tx_gen_done()/isotp_tx_timeout(): leggere sempre tx.state (acquire) prima di tx_gen: l'ordine inverso permette a una coppia CPU con ordinamento debole di accoppiare un tx.state fresco con uno slot tx_gen/tx_result obsoleto. - isotp_sendmsg(): wait_tx_done: eseguire il drain di sk_err tramite sock_error() dopo aver letto il risultato da so->tx_result[], in modo che un errore già segnalato non rimanga bloccato per una successiva poll()/SO_ERROR.
Allineare inoltre gli accessi lock-free rimanenti a so->tx.state/rx.state/cfecho e utilizzare skb->hash come indicatore unico del frame di eco loopback.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.