Skip to content
CVE PROGRAM SOURCE RECORDUnscored

CVE-2026-80739

net/mlx5e: TC, Check if flow is PEER before acquiring devcom lock

Description

In the Linux kernel, the following vulnerability has been resolved: net/mlx5e: TC, Check if flow is PEER before acquiring devcom lock In case __mlx5e_add_fdb_flow() fails in lower levels, the flow is deleted via mlx5e_tc_del_flow(), and mlx5e_tc_del_flow() is acquiring ESW devcom lock without condition. In addition, in case of peer_flow, __mlx5e_add_fdb_flow() is called while holding ESW devcom comp lock. This results in an AA deadlock. To fix this, introduce a new PEER flag that is set on flows created as peer flows (the duplicate flows on peer devices), and check it in mlx5e_tc_del_flow() before acquiring ESW devcom lock. Lockdep splat: ============================================ WARNING: possible recursive locking detected ============================================ Possible unsafe locking scenario: CPU0 ---- lock(&comp->lock_key#2); lock(&comp->lock_key#2); *** DEADLOCK *** Call Trace: <TASK> dump_stack_lvl+0x69/0xa0 print_deadlock_bug.cold+0xbd/0xca __lock_acquire+0x1671/0x2ec0 lock_acquire+0x10e/0x2e0 down_read+0x95/0x430 mlx5_devcom_for_each_peer_begin+0x4e/0xe0 [mlx5_core] mlx5e_tc_del_flow+0x11d/0xa70 [mlx5_core] mlx5e_flow_put+0x99/0x100 [mlx5_core] __mlx5e_add_fdb_flow+0x409/0xf00 [mlx5_core] mlx5e_configure_flower+0x2a86/0x4100 [mlx5_core] mlx5e_rep_setup_tc_cls_flower+0x12f/0x1b0 [mlx5_core] mlx5e_rep_setup_tc_cb+0x153/0x750 [mlx5_core] tc_setup_cb_add+0x1dc/0x470 fl_change+0x2f4d/0x626d [cls_flower] tc_new_tfilter+0x79b/0x2310 rtnetlink_rcv_msg+0x778/0xad0 do_syscall_64+0x70/0x960 entry_SYSCALL_64_after_hwframe+0x4b/0x53 </TASK>

Affected products

Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.

Linux Linux

Default version status: unaffected

  • 04de7dda7394fa9c2b0fc9cec65661d9b4f0d04d to < ead5145d290a918b7c3c3141a64b3f827a9e1b6baffected
  • 04de7dda7394fa9c2b0fc9cec65661d9b4f0d04d to < 607adbda01053abf5f93e322fe39325da8828cb8affected
  • 04de7dda7394fa9c2b0fc9cec65661d9b4f0d04d to < 585df8643081e6f616579bc52cd49ac823a57c82affected
  • 04de7dda7394fa9c2b0fc9cec65661d9b4f0d04d to < ff9e7d5e3500be389ce7a0e46db3a77149830bc9affected
  • 04de7dda7394fa9c2b0fc9cec65661d9b4f0d04d to < 7165fe321c61ec138850c02f030f274797761f5faffected
  • 04de7dda7394fa9c2b0fc9cec65661d9b4f0d04d to < 6ddfba2ea98db21b001e0e5c472499156224650caffected

Linux Linux

Default version status: affected

  • 5.0affected
  • 0 to < 5.0unaffected
  • 6.1.191 to ≤ 6.1.*unaffected
  • 6.6.152 to ≤ 6.6.*unaffected
  • 6.12.104 to ≤ 6.12.*unaffected
  • 6.18.45 to ≤ 6.18.*unaffected
  • 7.1.9 to ≤ 7.1.*unaffected
  • 7.2 to ≤ *unaffected

References