Skip to content
OpenAdvisories
Unscored CVE-2024-27014 EUVD-2024-24276GHSA-gj8m-4ccw-v82h

net/mlx5e: Prevent deadlock while disabling aRFS

Published May 1, 2024 · Updated May 11, 2026 · Assigned by Linux

Vendor: Linux Product: Linux Package: kernel Package: linux Package: linux Package: linux-allwinner-5.19 Package: linux-aws Package: linux-aws-5.0 Package: linux-aws-5.11 Package: linux-aws-5.13 Package: linux-aws-5.15 Package: linux-aws-5.19 Package: linux-aws-5.3 Package: linux-aws-5.4 Package: linux-aws-5.8 Package: linux-aws-6.2 Package: linux-aws-6.5 Package: linux-aws-6.8 Package: linux-aws-fips Package: linux-aws-hwe Package: linux-azure Package: linux-azure-4.15 Package: linux-azure-5.11 Package: linux-azure-5.13 Package: linux-azure-5.15 Package: linux-azure-5.19 Package: linux-azure-5.3 Package: linux-azure-5.4 Package: linux-azure-5.8 Package: linux-azure-6.2 Package: linux-azure-6.5 Package: linux-azure-6.8 Package: linux-azure-edge Package: linux-azure-fde Package: linux-azure-fde-5.15 Package: linux-azure-fde-5.19 Package: linux-azure-fde-6.2 Package: linux-azure-fips Package: linux-bluefield Package: linux-fips Package: linux-gcp Package: linux-gcp-4.15 Package: linux-gcp-5.11 Package: linux-gcp-5.13 Package: linux-gcp-5.15 Package: linux-gcp-5.19 Package: linux-gcp-5.3 Package: linux-gcp-5.4 Package: linux-gcp-5.8 Package: linux-gcp-6.2 Package: linux-gcp-6.5 Package: linux-gcp-fips Package: linux-gke Package: linux-gke-4.15 Package: linux-gke-5.15 Package: linux-gke-5.4 Package: linux-gkeop Package: linux-gkeop-5.15 Package: linux-gkeop-5.4 Package: linux-hwe Package: linux-hwe-5.11 Package: linux-hwe-5.13 Package: linux-hwe-5.15 Package: linux-hwe-5.19 Package: linux-hwe-5.4 Package: linux-hwe-5.8 Package: linux-hwe-6.2 Package: linux-hwe-6.5 Package: linux-hwe-edge Package: linux-ibm Package: linux-ibm-5.15 Package: linux-ibm-5.4 Package: linux-intel Package: linux-intel-5.13 Package: linux-intel-iot-realtime Package: linux-intel-iotg Package: linux-intel-iotg-5.15 Package: linux-iot Package: linux-kvm Package: linux-lowlatency Package: linux-lowlatency-hwe-5.15 Package: linux-lowlatency-hwe-5.19 Package: linux-lowlatency-hwe-6.2 Package: linux-lowlatency-hwe-6.5 Package: linux-nvidia Package: linux-nvidia-6.2 Package: linux-nvidia-6.5 Package: linux-nvidia-6.8 Package: linux-nvidia-tegra Package: linux-nvidia-tegra-5.15 Package: linux-nvidia-tegra-igx Package: linux-oem Package: linux-oem-5.10 Package: linux-oem-5.13 Package: linux-oem-5.14 Package: linux-oem-5.17 Package: linux-oem-5.6 Package: linux-oem-6.0 Package: linux-oem-6.1 Package: linux-oem-6.5 Package: linux-oem-6.8 Package: linux-oracle Package: linux-oracle-5.0 Package: linux-oracle-5.11 Package: linux-oracle-5.13 Package: linux-oracle-5.15 Package: linux-oracle-5.3 Package: linux-oracle-5.4 Package: linux-oracle-5.8 Package: linux-oracle-6.5 Package: linux-oracle-6.8 Package: linux-raspi Package: linux-raspi-5.4 Package: linux-raspi-realtime Package: linux-raspi2 Package: linux-realtime Package: linux-riscv Package: linux-riscv-5.11 Package: linux-riscv-5.15 Package: linux-riscv-5.19 Package: linux-riscv-5.8 Package: linux-riscv-6.5 Package: linux-starfive-5.19 Package: linux-starfive-6.2 Package: linux-starfive-6.5 Package: linux-vmware Package: linux-xilinx-zynqmp Platform: Linux Ecosystem: Azure Linux Ecosystem: Debian Ecosystem: Ubuntu

Description

In the Linux kernel, the following vulnerability has been resolved:

net/mlx5e: Prevent deadlock while disabling aRFS

When disabling aRFS under the `priv->state_lock`, any scheduled
aRFS works are canceled using the `cancel_work_sync` function,
which waits for the work to end if it has already started.
However, while waiting for the work handler, the handler will
try to acquire the `state_lock` which is already acquired.

The worker acquires the lock to delete the rules if the state
is down, which is not the worker's responsibility since
disabling aRFS deletes the rules.

Add an aRFS state variable, which indicates whether the aRFS is
enabled and prevent adding rules when the aRFS is disabled.

Kernel log:

======================================================
WARNING: possible circular locking dependency detected
6.7.0-rc4_net_next_mlx5_5483eb2 #1 Tainted: G I
------------------------------------------------------
ethtool/386089 is trying to acquire lock:
ffff88810f21ce68 ((work_completion)(&rule->arfs_work)){+.+.}-{0:0}, at: __flush_work+0x74/0x4e0

but task is already holding lock:
ffff8884a1808cc0 (&priv->state_lock){+.+.}-{3:3}, at: mlx5e_ethtool_set_channels+0x53/0x200 [mlx5_core]

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-> #1 (&priv->state_lock){+.+.}-{3:3}:
__mutex_lock+0x80/0xc90
arfs_handle_work+0x4b/0x3b0 [mlx5_core]
process_one_work+0x1dc/0x4a0
worker_thread+0x1bf/0x3c0
kthread+0xd7/0x100
ret_from_fork+0x2d/0x50
ret_from_fork_asm+0x11/0x20

-> #0 ((work_completion)(&rule->arfs_work)){+.+.}-{0:0}:
__lock_acquire+0x17b4/0x2c80
lock_acquire+0xd0/0x2b0
__flush_work+0x7a/0x4e0
__cancel_work_timer+0x131/0x1c0
arfs_del_rules+0x143/0x1e0 [mlx5_core]
mlx5e_arfs_disable+0x1b/0x30 [mlx5_core]
mlx5e_ethtool_set_channels+0xcb/0x200 [mlx5_core]
ethnl_set_channels+0x28f/0x3b0
ethnl_default_set_doit+0xec/0x240
genl_family_rcv_msg_doit+0xd0/0x120
genl_rcv_msg+0x188/0x2c0
netlink_rcv_skb+0x54/0x100
genl_rcv+0x24/0x40
netlink_unicast+0x1a1/0x270
netlink_sendmsg+0x214/0x460
__sock_sendmsg+0x38/0x60
__sys_sendto+0x113/0x170
__x64_sys_sendto+0x20/0x30
do_syscall_64+0x40/0xe0
entry_SYSCALL_64_after_hwframe+0x46/0x4e

other info that might help us debug this:

Possible unsafe locking scenario:

CPU0 CPU1
---- ----
lock(&priv->state_lock);
lock((work_completion)(&rule->arfs_work));
lock(&priv->state_lock);
lock((work_completion)(&rule->arfs_work));

*** DEADLOCK ***

3 locks held by ethtool/386089:
#0: ffffffff82ea7210 (cb_lock){++++}-{3:3}, at: genl_rcv+0x15/0x40
#1: ffffffff82e94c88 (rtnl_mutex){+.+.}-{3:3}, at: ethnl_default_set_doit+0xd3/0x240
#2: ffff8884a1808cc0 (&priv->state_lock){+.+.}-{3:3}, at: mlx5e_ethtool_set_channels+0x53/0x200 [mlx5_core]

stack backtrace:
CPU: 15 PID: 386089 Comm: ethtool Tainted: G I 6.7.0-rc4_net_next_mlx5_5483eb2 #1
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
Call Trace:
<TASK>
dump_stack_lvl+0x60/0xa0
check_noncircular+0x144/0x160
__lock_acquire+0x17b4/0x2c80
lock_acquire+0xd0/0x2b0
? __flush_work+0x74/0x4e0
? save_trace+0x3e/0x360
? __flush_work+0x74/0x4e0
__flush_work+0x7a/0x4e0
? __flush_work+0x74/0x4e0
? __lock_acquire+0xa78/0x2c80
? lock_acquire+0xd0/0x2b0
? mark_held_locks+0x49/0x70
__cancel_work_timer+0x131/0x1c0
? mark_held_locks+0x49/0x70
arfs_del_rules+0x143/0x1e0 [mlx5_core]
mlx5e_arfs_disable+0x1b/0x30 [mlx5_core]
mlx5e_ethtool_set_channels+0xcb/0x200 [mlx5_core]
ethnl_set_channels+0x28f/0x3b0
ethnl_default_set_doit+0xec/0x240
genl_family_rcv_msg_doit+0xd0/0x120
genl_rcv_msg+0x188/0x2c0
? ethn
---truncated---

Affected products

VendorProductAffectedFixed
Linux Linux 4.7 6.1.88

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 linux 6.8.9-1 —
Debian 13 linux 6.8.9-1 —
Debian 12 linux 6.1.90-1 DSA-5680-1
ReleasePackageFixed inAdvisory
Ubuntu Nvidia-BlueField 22.04 LTS linux-bluefield No fix yet —
Ubuntu 24.04 LTS linux 6.8.0-38.38 USN-6893-1
Ubuntu 24.04 LTS linux-aws 6.8.0-1011.12 USN-6893-3
Ubuntu 24.04 LTS linux-azure 6.8.0-1010.10 USN-6893-1
Ubuntu 24.04 LTS linux-gcp 6.8.0-1010.11 USN-6893-1
Ubuntu 24.04 LTS linux-gke 6.8.0-1006.9 USN-6893-2
Ubuntu 24.04 LTS linux-ibm +2 6.8.0-1008.8 USN-6918-1, USN-6893-1
Ubuntu 24.04 LTS linux-intel 6.8.0-1007.14 USN-6893-1
Ubuntu 24.04 LTS linux-nvidia 6.8.0-1009.9 USN-6893-2
Ubuntu 24.04 LTS linux-raspi 6.8.0-1007.7 USN-6893-1
Ubuntu 24.04 LTS linux-riscv +1 6.8.0-38.38.1 USN-6893-1
Ubuntu 22.04 LTS linux +49 No fix yet —
Ubuntu 22.04 LTS linux-aws-6.8 6.8.0-1011.12~22.04.1 —
Ubuntu 22.04 LTS linux-azure-6.8 6.8.0-1010.10~22.04.1 —
Ubuntu 22.04 LTS linux-nvidia-6.8 6.8.0-1009.9~22.04.1 —
Ubuntu 22.04 LTS linux-oracle-6.8 6.8.0-1008.8~22.04.1 —
Ubuntu 20.04 LTS linux-gke +28 No fix yet —
Ubuntu 18.04 LTS linux-gcp +14 No fix yet —
Show 13 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu 16.04 LTS linux-hwe-edge No fix yet —
Ubuntu Pro Realtime 24.04 LTS linux-raspi-realtime 6.8.0-2006.6 —
Ubuntu Pro Realtime 24.04 LTS linux-realtime 6.8.1-1004.4 —
Ubuntu Pro Realtime 22.04 LTS linux-realtime +1 No fix yet —
Ubuntu Pro FIPS 20.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro FIPS 18.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro FIPS-updates 22.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro FIPS-updates 20.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro FIPS-updates 18.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro FIPS-preview 22.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro 20.04 LTS linux +21 No fix yet —
Ubuntu Pro 18.04 LTS linux +12 No fix yet —
Ubuntu Pro 16.04 LTS linux-gcp +4 No fix yet —
Ubuntu Pro 14.04 LTS linux-azure No fix yet —
ReleasePackageFixed inAdvisory
RHEL 9 bpftool 7.4.0-503.11.1.el9_5 RHSA-2024:9315
RHEL 9 rv +67 5.14.0-503.11.1.el9_5 RHSA-2024:9315
RHEL 8 kernel-rt +12 4.18.0-553.5.1.rt7.346.el8_10 RHSA-2024:3627
RHEL 8 perf +26 4.18.0-553.5.1.el8_10 RHSA-2024:3618
Show 1 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
RHEL 9.4 EUS bpftool 7.3.0-427.60.1.el9_4 RHSA-2025:3021
RHEL 9.4 EUS rv +64 5.14.0-427.60.1.el9_4 RHSA-2025:3021

AlmaLinux

Errata ↗
ReleasePackageFixed inAdvisory
AlmaLinux 8 kernel-rt +11 4.18.0-553.5.1.rt7.346.el8_10 ALSA-2024:3627
AlmaLinux 8 perf +24 4.18.0-553.5.1.el8_10 ALSA-2024:3618

Rocky Linux

Errata ↗
ReleasePackageFixed inAdvisory
Rocky Linux 8 kernel 4.18.0-553.5.1.el8_10 RLSA-2024:3618
Rocky Linux 8 kernel-rt 4.18.0-553.5.1.rt7.346.el8_10 RLSA-2024:3627
ReleasePackageFixed inAdvisory
SLES 15 SP6 kernel-64kb +3 6.4.0-150600.23.7.3 SUSE-SU-2024:2203-1
SLES 15 SP6 kernel-azure +1 6.4.0-150600.8.5.4 SUSE-SU-2024:2135-1
SLES 15 SP6 kernel-default-base 6.4.0-150600.23.7.3.150600.12.2.7 SUSE-SU-2024:2203-1
SLES 15 SP6 kernel-docs 6.4.0-150600.23.7.4 SUSE-SU-2024:2203-1
SLES 15 SP6 kernel-source 6.4.0-150600.23.7.2 SUSE-SU-2024:2203-1
SLES 15 SP6 kernel-syms 6.4.0-150600.23.7.1 SUSE-SU-2024:2203-1
SLES 15 SP6 kernel-syms-azure 6.4.0-150600.8.5.1 SUSE-SU-2024:2135-1
SLES 15 SP5 kernel-64kb +5 5.14.21-150500.55.62.2 SUSE-SU-2024:1659-1
SLES 15 SP5 kernel-azure +2 5.14.21-150500.33.51.1 SUSE-SU-2024:1644-1
SLES 15 SP5 kernel-default-base 5.14.21-150500.55.62.2.150500.6.27.2 SUSE-SU-2024:1659-1
SLES 15 SP5 kernel-syms 5.14.21-150500.55.62.1 SUSE-SU-2024:1659-1
SLES 12 SP5 kernel-azure +2 4.12.14-16.182.1 SUSE-SU-2024:1643-1
SLES 12 SP5 kernel-docs +4 4.12.14-122.216.1 SUSE-SU-2024:1870-1
Show 9 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
SLES for SAP 12 SP5 kernel-azure +2 4.12.14-16.182.1 SUSE-SU-2024:1643-1
SLES for SAP 12 SP5 kernel-syms +2 4.12.14-122.216.1 SUSE-SU-2024:1870-1
SLE Real Time 12 SP5 kernel-rt +3 4.12.14-10.182.1 SUSE-SU-2024:1646-1
SLE Micro 6.0 kernel-default-base 6.4.0-17.1.1.51 SUSE-SU-2025:20008-1
SLE Micro 6.0 kernel-rt +1 6.4.0-9.1 SUSE-SU-2025:20028-1
SLE Micro 6.0 kernel-source +2 6.4.0-18.1 SUSE-SU-2025:20008-1
SLE Micro 5.5 kernel-default 5.14.21-150500.55.62.2 SUSE-SU-2024:1659-1
SLE Micro 5.5 kernel-default-base 5.14.21-150500.55.62.2.150500.6.27.2 SUSE-SU-2024:1659-1
SLE Micro 5.5 kernel-rt +1 5.14.21-150500.13.52.1 SUSE-SU-2024:1663-1
SLE Live Patching 15 SP6 kernel-default 6.4.0-150600.23.7.3 SUSE-SU-2024:2203-1
SLE Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_1 1-150600.1.5.1 SUSE-SU-2024:2973-1
SLE Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_1 1-150600.13.3.7 SUSE-SU-2024:2203-1
SLE Live Patching 15 SP5 kernel-default 5.14.21-150500.55.62.2 SUSE-SU-2024:1659-1
SLE Live Patching 15 SP5 kernel-livepatch-SLE15-SP5-RT_Update_14 1-150500.11.5.1 SUSE-SU-2024:1663-1
SLE Live Patching 15 SP5 kernel-livepatch-SLE15-SP5_Update_13 1-150500.11.3.2 SUSE-SU-2024:1659-1
SLE Live Patching 12 SP5 kernel-default 4.12.14-122.216.1 SUSE-SU-2024:1870-1
SLE Live Patching 12 SP5 kgraft-patch-SLE12-SP5_Update_56 1-8.3.1 SUSE-SU-2024:1870-1
SUSE Real Time Module 15 SP6 kernel-rt +3 6.4.0-150600.10.5.1 SUSE-SU-2024:2973-1
SUSE Real Time Module 15 SP5 kernel-rt +3 5.14.21-150500.13.52.1 SUSE-SU-2024:1663-1
ReleasePackageFixed inAdvisory
openSUSE Leap 15.6 dtb-aarch64 +2 6.4.0-150600.23.7.1 SUSE-SU-2024:2203-1
openSUSE Leap 15.6 kernel-64kb +5 6.4.0-150600.23.7.3 SUSE-SU-2024:2203-1
openSUSE Leap 15.6 kernel-azure +1 6.4.0-150600.8.5.4 SUSE-SU-2024:2135-1
openSUSE Leap 15.6 kernel-default-base 6.4.0-150600.23.7.3.150600.12.2.7 SUSE-SU-2024:2203-1
openSUSE Leap 15.6 kernel-docs 6.4.0-150600.23.7.4 SUSE-SU-2024:2203-1
openSUSE Leap 15.6 kernel-rt +3 6.4.0-150600.10.5.1 SUSE-SU-2024:2973-1
openSUSE Leap 15.6 kernel-source 6.4.0-150600.23.7.2 SUSE-SU-2024:2203-1
openSUSE Leap 15.6 kernel-syms-azure 6.4.0-150600.8.5.1 SUSE-SU-2024:2135-1
openSUSE Leap 15.5 dtb-aarch64 +2 5.14.21-150500.55.62.1 SUSE-SU-2024:1659-1
openSUSE Leap 15.5 kernel-64kb +7 5.14.21-150500.55.62.2 SUSE-SU-2024:1659-1
openSUSE Leap 15.5 kernel-azure +2 5.14.21-150500.33.51.1 SUSE-SU-2024:1644-1
openSUSE Leap 15.5 kernel-default-base 5.14.21-150500.55.62.2.150500.6.27.2 SUSE-SU-2024:1659-1
openSUSE Leap 15.5 kernel-rt +3 5.14.21-150500.13.52.1 SUSE-SU-2024:1663-1

Azure Linux

ReleasePackageFixed inAdvisory
Azure Linux 2 (CBL-Mariner) kernel 5.15.158.1-1 —

Oracle Linux

ReleasePackageFixed inAdvisory
Oracle Linux 9 bpftool 7.4.0-503.11.1.el9_5 ELSA-2024-9315
Oracle Linux 9 rv +28 5.14.0-503.11.1.el9_5 ELSA-2024-9315
Oracle Linux 8 perf +19 4.18.0-553.5.1.el8_10 ELSA-2024-3618

Advisories 27

References