CVE-2026-45973 in Linux
Сводка
по VulDB • 03.06.2026
В ядре Linux устранена следующая уязвимость:
RDMA/mlx5: Исправлено зависание UMR в состоянии ошибки LAG при выгрузке
Во время сброса прошивки в режиме LAG состояние гонки (race condition) приводит к бесконечному зависанию драйвера при ожидании завершения операции UMR во время выгрузки устройства. См. [1].
В режиме LAG устройство bond регистрируется только на мастер-устройстве, поэтому оно никогда не получает события sys_error от слейва. Во время сброса прошивки это приводит к тому, что ожидания UMR при выгрузке зависают навсегда, поскольку слейв не отвечает, но мастер еще не перешел в состояние ошибки, поэтому отправка запросов UMR завершается успешно, но подтверждения (completions) никогда не поступают.
Исправление заключается в добавлении уведомителя sys_error, который регистрируется до MLX5_IB_STAGE_IB_REG и остается активным до момента после вызова ib_unregister_device(). Это гарантирует, что события ошибок достигают устройства bond на протяжении всего процесса разбора (teardown).
[1]
Трассировка вызовов (Call Trace): __schedule+0x2bd/0x760 schedule+0x37/0xa0 schedule_preempt_disabled+0xa/0x10 __mutex_lock.isra.6+0x2b5/0x4a0 __mlx5_ib_dereg_mr+0x606/0x870 [mlx5_ib]
? __xa_erase+0x4a/0xa0 ? _cond_resched+0x15/0x30 ? wait_for_completion+0x31/0x100 ib_dereg_mr_user+0x48/0xc0 [ib_core]
? rdmacg_uncharge_hierarchy+0xa0/0x100 destroy_hw_idr_uobject+0x20/0x50 [ib_uverbs]
uverbs_destroy_uobject+0x37/0x150 [ib_uverbs]
__uverbs_cleanup_ufile+0xda/0x140 [ib_uverbs]
uverbs_destroy_ufile_hw+0x3a/0xf0 [ib_uverbs]
ib_uverbs_remove_one+0xc3/0x140 [ib_uverbs]
remove_client_context+0x8b/0xd0 [ib_core]
disable_device+0x8c/0x130 [ib_core]
__ib_unregister_device+0x10d/0x180 [ib_core]
ib_unregister_device+0x21/0x30 [ib_core]
__mlx5_ib_remove+0x1e4/0x1f0 [mlx5_ib]
auxiliary_bus_remove+0x1e/0x30 device_release_driver_internal+0x103/0x1f0 bus_remove_device+0xf7/0x170 device_del+0x181/0x410 mlx5_rescan_drivers_locked.part.10+0xa9/0x1d0 [mlx5_core]
mlx5_disable_lag+0x253/0x260 [mlx5_core]
mlx5_lag_disable_change+0x89/0xc0 [mlx5_core]
mlx5_eswitch_disable+0x67/0xa0 [mlx5_core]
mlx5_unload+0x15/0xd0 [mlx5_core]
mlx5_unload_one+0x71/0xc0 [mlx5_core]
mlx5_sync_reset_reload_work+0x83/0x100 [mlx5_core]
process_one_work+0x1a7/0x360 worker_thread+0x30/0x390 ? create_worker+0x1a0/0x1a0 kthread+0x116/0x130 ? kthread_flush_work_fn+0x10/0x10 ret_from_fork+0x22/0x40
If you want to get best quality of vulnerability data, you may have to visit VulDB.