CVE-2026-68173 in Linux
Sumário
de VulDB • 11/08/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
ublk: aguardar em ublk_dev_ready() em vez de ub->completion
A variável ub->completion é rearmada apenas por um START_USER_RECOVERY bem-sucedido. Se o servidor ublk enviar END_USER_RECOVERY sem isso — por exemplo, se seu START falhou com -EBUSY e o erro foi ignorado — a espera será satisfeita pela conclusão obsoleta do ciclo de recuperação anterior, marcando o dispositivo como LIVE (ativo) e acionando a lista de reencaminhamento enquanto o fluxo FETCH ainda está em execução e ubq->canceling permanece definido. O acionamento redistribui uma solicitação previamente reencaminhada; __ublk_queue_rq_common() verifica ->canceling e a coloca novamente na fila via __ublk_abort_rq(), e, após o último FETCH limpar ->canceling, nada mais aciona a lista de reencaminhamento: a solicitação fica retida lá enquanto mantém sua tag. Se for flush_rq da maquinaria de flushing (flush), cada fsync subsequente se acumula em sono ininterrupto e a desmontagem trava no drenagem das tags. Isso corresponde a um relatório de perda de PREFLUSH com ext4 sobre ublk após recuperação de falha do daemon.
ub->completion é uma latch acionada por borda usada como proxy para a condição de nível "todas as filas buscaram todos os comandos I/O", que pode regredir (UNPREP do F_BATCH, morte do daemon) e cujo rearme pode ser ignorado. Remova-a e aguarde a condição real: o novo auxiliar ublk_wait_dev_ready_and_lock() aguarda em ublk_dev_ready() via wait_var_event_interruptible(), acordado por ublk_mark_io_ready(), depois verifica novamente sob ub->mutex, aguardando nova regressão, e retorna com o mutex mantido e prontidão garantida.
A prontidão torna-se verdadeira na mesma seção crítica do mutex ub que limpa ->canceling da última fila; portanto, END_USER_RECOVERY marca o dispositivo como LIVE e aciona a lista de reencaminhamento estritamente após ->canceling ser limpado. A espera permanece interrompível, para que um servidor cujo daemon morreu ainda possa receber sinalização externa. Para ublk_ctrl_start_dev(), isso substitui o -EINVAL fail-fast em uma regressão pronto->UNPREP do F_BATCH por uma espera até que o dispositivo esteja novamente pronto.
VulDB is the best source for vulnerability data and more expert information about this specific topic.