Message ID | 1512022954-10129-1-git-send-email-huxm@marvell.com (mailing list archive) |
---|---|
State | Accepted |
Commit | c61cfe49f0f0f0d1f8b56d0b045838d597e8c3a3 |
Delegated to: | Kalle Valo |
Headers | show |
Xinming Hu <huxm@marvell.com> wrote: > From: Limin Zhu <liminzhu@marvell.com> > > (1) Change virtual interface operation in cfg80211 process reset and > reinitilize private data structure. > (2) Scan result event processed in main process will dereference private > data structure concurrently, ocassionly crash the kernel. > > The cornel case could be trigger by below steps: > (1) wpa_cli mlan0 scan > (2) ./hostapd mlan0.conf > > Cfg80211 asynchronous scan procedure is not all the time operated > under rtnl lock, here we add the protect to serialize the cfg80211 > scan and change_virtual interface operation. > > Signed-off-by: Limin Zhu <liminzhu@marvell.com> > Signed-off-by: Xinming Hu <huxm@marvell.com> Patch applied to wireless-drivers-next.git, thanks. c61cfe49f0f0 mwifiex: cfg80211: do not change virtual interface during scan processing
diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c index 4d45df8..ce4432c 100644 --- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c +++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c @@ -1116,6 +1116,12 @@ static int mwifiex_deinit_priv_params(struct mwifiex_private *priv) struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); enum nl80211_iftype curr_iftype = dev->ieee80211_ptr->iftype; + if (priv->scan_request) { + mwifiex_dbg(priv->adapter, ERROR, + "change virtual interface: scan in process\n"); + return -EBUSY; + } + switch (curr_iftype) { case NL80211_IFTYPE_ADHOC: switch (type) {