{"id":39077,"date":"2026-10-16T00:34:59","date_gmt":"2026-10-15T16:34:59","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98406"},"modified":"2026-10-16T00:34:59","modified_gmt":"2026-10-15T16:34:59","slug":"cve-2026-98406","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98406","title":{"rendered":"CVE-2026-98406 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: mac80211: avoid"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>wifi: mac80211: avoid WARN in set_bitrate_mask when sdata not in driver<\/p>\n<p>ieee80211_set_bitrate_mask() checks if the interface is running via<br \/>\nieee80211_sdata_running(), but it does not check if the interface is<br \/>\nstill present in the driver.<\/p>\n<p>When sdata is running but IEEE80211_SDATA_IN_DRIVER is not set, the<br \/>\ncall reaches drv_set_bitrate_mask() in driver-ops.h which hits<\/p>\n<p>  wlan1: Failed check-sdata-in-driver check, flags: 0x0<br \/>\n  WARNING: net\/mac80211\/driver-ops.h:884 at drv_set_bitrate_mask<\/p>\n<p>Syzkaller triggers this via wext SIOCSIWRATE ioctl. The Call Trace shows<br \/>\nwext_ioctl_dispatch() in wext-core.c dispatching the ioctl, calling<br \/>\nioctl_standard_call() for SIOCSIWRATE, which calls cfg80211_wext_siwrate()<br \/>\nin wext-compat.c. That builds a bitrate mask and calls<br \/>\nrdev_set_bitrate_mask() which ends up in ieee80211_set_bitrate_mask() in<br \/>\ncfg.c. The interface is marked running via SDATA_STATE_RUNNING but<br \/>\nflags is 0, so check_sdata_in_driver() fails.<\/p>\n<p>When the interface is being torn down, or when wext ioctl is issued<br \/>\nduring interface bringup before drv_add_interface() sets IN_DRIVER, the<br \/>\nrunning check passes while IN_DRIVER is clear.<\/p>\n<p>Check IEEE80211_SDATA_IN_DRIVER in ieee80211_set_bitrate_mask() before<br \/>\ncalling the driver, returning -ENETDOWN. This avoids the WARN_ONCE in<br \/>\ndriver-ops.h and matches other cfg.c operations that bail early when not<br \/>\nin driver.<\/p>\n<p>This change should be safe because wiphy mutex is held in<br \/>\ncfg80211_wext_siwrate() via guard(wiphy), and IN_DRIVER is set\/cleared<br \/>\nunder RTNL and wiphy paths in drv_add_interface() and<br \/>\ndrv_remove_interface() in driver-ops.c, so the check is race-free<br \/>\nagainst driver add\/remove. Returning -ENETDOWN is the same error other<br \/>\nnot-running paths use and does not introduce new locking.<\/p>\n<p>[also add second syzbot report]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>wifi: mac80211: avoid WARN in set_bitrate_mask when sdata not in driver<\/p>\n<p>ieee80211_set_bitrate_mask() checks if the interface is ru<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-39077","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/39077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=39077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=39077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=39077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}