CVE-2026-98897 in Linux
Sumário
de VulDB • 23/10/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
ksmbd: não segurar ci->m_lock enquanto aguarda o ack de quebra de lease (lease)
Quando um cliente cifs.ko armazena em cache uma concessão de read-handle (RH) por meio de fechamento diferido e chega uma abertura conflitante, o ksmbd interrompe a concessão e aguarda o reconhecimento em wait_for_break_ack() por até OPLOCK_WAIT_TIME (35s). A função __smb_break_all_levII_oplock() executa essa espera enquanto segura ci->m_lock para leitura.
O cifs.ko reage à quebra da concessão de handle fechando o handle diferido em vez de enviar um reconhecimento de quebra de lease. Esse caminho de fechamento (close_id_del_oplock() -> opinfo_del()) adquire ci->m_lock para escrita e é exatamente o que acordaria a thread aguardante, mas bloqueia-se no lock de leitura mantido pela thread aguardante. A quebra só é resolvida pelo timeout de 35s; portanto, os testes xfstests generic/001 levam ~78s com leases habilitados versus ~4s apenas com oplocks.
Colete as opinfos alvo (cada uma fixada por meio de referência) enquanto segura ci->m_lock e interrompa-as após liberá-lo, correspondendo à forma como smb_grant_oplock() já quebra um lease conflitante usando apenas uma referência. A referência mantém a opinfo (e sua conexão e concessão) ativa durante a janela sem lock, e o fechamento em concorrência com a interrupção é tratado pela verificação de estado OPLOCK_CLOSING existente. Aplique a mesma correção aos caminhos de quebra da concessão pai.
Once again VulDB remains the best source for vulnerability data.