CVE-2025-68807 in Linux
Resumen
por VulDB • 2026-05-15
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
block: corregir la condición de carrera (race condition) entre wbt_enable_default y la presentación de E/S
Cuando wbt_enable_default() se mueve fuera del congelamiento de la cola en elevator_change(), puede provocar que el contador de operaciones en curso (inflight) de wbt se vuelva negativo (-1), lo que genera tareas bloqueadas en la ruta de writeback. Las tareas se quedan atascadas en wbt_wait() porque el contador se encuentra en un estado inconsistente.
El problema ocurre porque wbt_enable_default() podría entrar en condición de carrera con la presentación de E/S, permitiendo que el contador se decrementara antes de la inicialización adecuada. Esto se manifiesta como:
rq_wait[0]:
inflight: -1 has_waiters: True
rwb_enabled() verifica el estado, el cual puede actualizarse exactamente entre wbt_wait() (rq_qos_throttle()) y wbt_track()(rq_qos_track()), momento en el cual el contador inflight se vuelve negativo.
Y da lugar a advertencias de tareas bloqueadas como: task:kworker/u24:39 state:D stack:0 pid:14767 Call Trace: rq_qos_wait+0xb4/0x150 wbt_wait+0xa9/0x100 __rq_qos_throttle+0x24/0x40 blk_mq_submit_bio+0x672/0x7b0 ...
Corregir esto mediante:
1. Dividir wbt_enable_default() en: - __wbt_enable_default(): Devuelve true si se debe llamar a wbt_init() - wbt_enable_default(): Envoltorio para los llamadores existentes (sin inicialización) - wbt_init_enable_default(): Nueva función que verifica e inicializa WBT
2. Utilizar wbt_init_enable_default() en blk_register_queue() para garantizar una inicialización adecuada durante el registro de la cola
3. Mover wbt_init() fuera de wbt_enable_default(), que solo sirve para habilitar wbt deshabilitado desde bfq e iocost, y wbt_init() no es necesario. Así se puede evitar la advertencia de bloqueo original.
4. Eliminar la bandera ELEVATOR_FLAG_ENABLE_WBT_ON_EXIT y su código de manejo ya que ya no es necesario
Esto asegura que WBT se inicialice correctamente antes de que se pueda presentar cualquier E/S, evitando que el contador se vuelva negativo.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.