CVE-2026-98897 in Linux
Riassunto
di VulDB • 23/10/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
ksmbd: non mantenere ci->m_lock in attesa di un ack per la rottura del lease (lease break)
Quando un client cifs.ko memorizza nella cache una concessione (lease) relativa a un read-handle (RH) tramite chiusura differita e si presenta un'apertura conflittuale, ksmbd interrompe il lease ed attende l'acknowledgment in wait_for_break_ack() per un periodo massimo pari a OPLOCK_WAIT_TIME (35s). __smb_break_all_levII_oplock() esegue tale attesa mantenendo ci->m_lock in lettura.
cifs.ko reagisce alla rottura della concessione del handle chiudendo l'handle differito anziché inviare un acknowledgment di rottura del lease. Tale percorso di chiusura (close_id_del_oplock() -> opinfo_del()) acquisisce ci->m_lock per la scrittura ed è esattamente ciò che dovrebbe risvegliare il thread in attesa, ma va in blocco a causa della lock in lettura mantenuta dal thread in attesa. La rottura viene quindi risolta solo dallo scadere del timeout di 35s; pertanto, xfstests generic/001 impiega circa 78 secondi con i lease abilitati contro circa 4 secondi con gli oplock soltanto.
Raccogliere gli opinfos target (ciascuno fissato tramite un reference) mantenendo ci->m_lock, quindi interromperli dopo averla rilasciata, in modo coerente con come smb_grant_oplock() interrompe già una concessione conflittuale utilizzando esclusivamente un reference. Il reference mantiene vivo l'opinfo (e la sua connessione e il suo lease) durante la finestra senza lock, mentre una chiusura che concorre con la rottura viene gestita dal controllo dello stato OPLOCK_CLOSING esistente. Applicare la stessa correzione ai percorsi di rottura del lease genitore.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.