Zhengchao Shao <shaozhengchao@xxxxxxxxxx> writes: > Syz reports the following WARNING: > wlan0: Failed check-sdata-in-driver check, flags: 0x0 > WARNING: CPU: 3 PID: 5384 at net/mac80211/main.c:287 > ieee80211_link_info_change_notify+0x1c2/0x230 > Modules linked in: > RIP: 0010:ieee80211_link_info_change_notify+0x1c2/0x230 > Call Trace: > <TASK> > ieee80211_set_mcast_rate+0x3e/0x50 > nl80211_set_mcast_rate+0x316/0x650 > genl_family_rcv_msg_doit+0x20b/0x300 > genl_rcv_msg+0x39f/0x6a0 > netlink_rcv_skb+0x13b/0x3b0 > genl_rcv+0x24/0x40 > netlink_unicast+0x4a2/0x740 > netlink_sendmsg+0x83e/0xce0 > sock_sendmsg+0xc5/0x100 > ____sys_sendmsg+0x583/0x690 > ___sys_sendmsg+0xe8/0x160 > __sys_sendmsg+0xbf/0x160 > do_syscall_64+0x35/0x80 > entry_SYSCALL_64_after_hwframe+0x46/0xb0 > </TASK> > > The execution process is as follows: > Thread A: > ieee80211_open() > ieee80211_do_open() > drv_add_interface() //set IEEE80211_SDATA_IN_DRIVER flag > ... > rtnl_newlink > do_setlink > dev_change_flags > ... > __dev_close_many > ieee80211_stop() > ieee80211_do_stop() > drv_remove_interface() //clear flag > ... > nl80211_set_mcast_rate() > ieee80211_set_mcast_rate() > ieee80211_link_info_change_notify() > check_sdata_in_driver() //WARNING because flag is cleared > > When the wlan device stops, the IEEE80211_SDATA_IN_ DRIVER flag is cleared. > And then after the set mcast rate command is executed, WARNING is generated > because the flag bit has been already cleared. > > Fixes: 591e73ee3f73 ("wifi: mac80211: properly skip link info driver update") > Reported-by: syzbot+bce2ca140cc00578ed07@xxxxxxxxxxxxxxxxxxxxxxxxx > Signed-off-by: Zhengchao Shao <shaozhengchao@xxxxxxxxxx> Wireless patches (ie. anything which starts with "wifi:") go to wireless and wireless-next trees, not to net tree. -- https://patchwork.kernel.org/project/linux-wireless/list/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches