CVE-2026-43468Linux内核net/mlx5组件存在死锁漏洞。该漏洞源于devlink锁与esw->工作队列之间的竞争条件。当工作队列执行事件处理函数并获取devlink锁时,若系统同时进行eswitch模式设置操作并尝试刷新工作队列,会导致死锁,影响系统可用性。
该漏洞发生在Linux内核的Mellanox网卡驱动(mlx5)的eswitch(交换机)模块中。具体而言,esw->work_queue工作队列在执行esw_vfs_changed_event_handler时会尝试获取devlink锁。与此同时,当系统调用.eswitch_mode_set设置eswitch模式时,会通过mlx5_eswitch_disable_locked和mlx5_eswitch_event_handler_unregister调用flush_workqueue来刷新工作队列。由于此时工作队列中的处理函数已经持有了devlink锁,而刷新操作需要等待工作队列完成,从而形成了死锁。漏洞利用方式需要本地低权限攻击者触发特定的eswitch模式变更事件,导致系统挂起。修复方案引入了代数计数器机制,在注销事件处理函数时增加计数器,并在工作处理函数执行前检查计数器是否匹配。若不匹配,说明eswitch状态已变更,处理函数直接退出,从而避免了在持有锁的情况下进行不必要的刷新操作,解决了死锁问题。