medium

CVE-2026-98619

A race condition in the Linux kernel’s ethtool ETHTOOL_TEST ioctl allows an offline self test to tear down and reconfigure a network interfa

Overview

A race condition in the Linux kernel’s ethtool ETHTOOL_TEST ioctl allows an offline self test to tear down and reconfigure a network interface without holding the required rtnl_lock. This can lead to device instability or crashes on ops‑locked drivers. The issue is limited to the ioctl path and affects specific drivers such as fbnic and bnxt.

Description

In the Linux kernel, the following vulnerability has been resolved: net: ethtool: keep rtnl_lock for the ioctl self test An offline self test that brings the interface down and back up with netif_close() / netif_open() requires rtnl_lock for both. Since the ethtool IOCTL path became rtnl-optional for ops-locked drivers, the ETHTOOL_TEST ioctl runs holding only the netdev instance lock, so on an ops-locked driver the self test now tears the device down without rtnl_lock. With lockdep this reproduces deterministically on every offline self test on such a driver; note the sole lock held is the instance lock, not rtnl: WARNING: suspicious RCU usage net/core/netpoll.c:207 suspicious rcu_dereference_protected() usage! 1 lock held by ethtool/107: #0: (&dev->lock){+.+.}, at: dev_ethtool Call Trace: netpoll_poll_disable __dev_close_many netif_close_many netif_close fbnic_self_test dev_ethtool_locked dev_ethtool dev_ioctl sock_ioctl __x64_sys_ioctl Without lockdep the same condition trips ASSERT_RTNL() in __dev_close_many() / __dev_open(); that check only samples the global rtnl state, so it can be masked by a concurrent rtnl holder, but the device is still being reconfigured without the lock it requires. The ethtool self_test is a legacy ioctl-only command, so an ETHTOOL_TEST case is only needed on the ioctl path. Add an opt-in bit for drivers whose self test needs rtnl_lock and set it on the ops-locked drivers whose offline self test tears the interface down and up: - fbnic (ops-locked via queue_mgmt_ops): fbnic_self_test() offline path uses netif_close() / netif_open(). - bnxt (ops-locked via queue_mgmt_ops): bnxt_self_test() offline path goes through bnxt_close_nic() / bnxt_half_open_nic() / bnxt_half_close_nic() / bnxt_open_nic(), which close and reopen the device.

Impact

The flaw can compromise the integrity of network device configuration and availability, potentially causing service interruptions. Defenders may observe unexpected interface resets or kernel warnings. Confidentiality is not directly impacted.

Remediation

Apply the official kernel patch that adds an opt‑in rtnl_lock requirement for drivers whose self test performs a full close/open cycle. If patching is not immediately possible, disable the ETHTOOL_TEST ioctl for affected drivers via sysctl or driver configuration, or upgrade to a kernel version that includes the fix.

Risk context

The CVE is rated medium severity with no EPSS data. While not critical, the vulnerability can disrupt network services in environments that rely on offline self tests, warranting timely patching or mitigation.

Affected products

  • fbnic driver
  • bnxt driver
  • Linux kernel

Scores

Severity
medium
CVSS v2
4.9
CVSS v3
—
CVSS v4
—
EPSS
—

kernel ethtool rtnl_lock self_test device_reconfiguration medium_severity

← All CVEs