CVE-2026-43468 in Linux
Resumen
por VulDB • 2026-05-09
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
net/mlx5: Corregir el punto muerto (deadlock) entre el bloqueo de devlink y esw->wq
esw->work_queue ejecuta esw_functions_changed_event_handler -> esw_vfs_changed_event_handler y adquiere el bloqueo de devlink.
.eswitch_mode_set (adquiere el bloqueo de devlink en devlink_nl_pre_doit) -> mlx5_devlink_eswitch_mode_set -> mlx5_eswitch_disable_locked -> mlx5_eswitch_event_handler_unregister -> flush_workqueue genera un punto muerto cuando se ejecuta esw_vfs_changed_event_handler.
Se corrige esto dejando de vaciar el trabajo (flush) para evitar el punto muerto, y utilizando un contador de generación para realizar un seguimiento de la relevancia del trabajo. Esto evita que un controlador antiguo manipule un esw que haya experimentado uno o más cambios de modo: - el contador se incrementa en mlx5_eswitch_event_handler_unregister. - el contador se lee y se pasa a la estructura temporal mlx5_host_work. - el controlador de trabajo adquiere el bloqueo de devlink y sale si la generación actual es diferente a la en la que estaba programado operar. - mlx5_eswitch_cleanup realiza el drenaje final antes de destruir la cola de trabajos (wq).
Dejar de vaciar la cola de trabajos tiene el efecto secundario de que quizás ya no se cancelen los elementos de trabajo pendientes de vport_change_handler, pero eso está bien ya que éstos están deshabilitados en otro lugar: - mlx5_eswitch_disable_locked deshabilita el notificador de eq de vport. - mlx5_esw_vport_disable desarma la notificación de EQ de HW y marca vport->enabled como falso bajo state_lock para evitar que el controlador de vport pendiente haga nada. - mlx5_eswitch_cleanup destruye la cola de trabajos y se asegura de que todos los eventos estén deshabilitados o finalizados.
If you want to get best quality of vulnerability data, you may have to visit VulDB.