From: Paul Stewart Date: Fri, 12 Oct 2012 23:55:03 +0000 (-0700) Subject: CHROMIUM: mwifiex: Clean up scan state on error X-Git-Url: http://git.cascardo.eti.br/?a=commitdiff_plain;h=53b56e77f86a2dd70ead4eb9dc26ed530618fa94;p=cascardo%2Flinux.git CHROMIUM: mwifiex: Clean up scan state on error De-reference and deallocate scan state on failure. Signed-off-by: Bing Zhao Signed-off-by: Paul Stewart BUG=chrome-os-partner:15087 TEST=Reproduce enable/disable of WiFi quickly Change-Id: I660200025abad5d9718c1fdb0bd7ce4ecbef503e Reviewed-on: https://gerrit.chromium.org/gerrit/35480 Reviewed-by: Bing Zhao Reviewed-by: Ryan Cairns Commit-Ready: Paul Stewart Tested-by: Paul Stewart --- diff --git a/drivers/net/wireless/mwifiex/cfg80211.c b/drivers/net/wireless/mwifiex/cfg80211.c index 1d93761dd345..9c63461be1cb 100644 --- a/drivers/net/wireless/mwifiex/cfg80211.c +++ b/drivers/net/wireless/mwifiex/cfg80211.c @@ -1334,8 +1334,6 @@ mwifiex_cfg80211_scan(struct wiphy *wiphy, struct net_device *dev, return -EBUSY; } - priv->scan_request = request; - priv->user_scan_cfg = kzalloc(sizeof(struct mwifiex_user_scan_cfg), GFP_KERNEL); if (!priv->user_scan_cfg) { @@ -1343,6 +1341,8 @@ mwifiex_cfg80211_scan(struct wiphy *wiphy, struct net_device *dev, return -ENOMEM; } + priv->scan_request = request; + priv->user_scan_cfg->num_ssids = request->n_ssids; priv->user_scan_cfg->ssid_list = request->ssids; @@ -1375,6 +1375,9 @@ mwifiex_cfg80211_scan(struct wiphy *wiphy, struct net_device *dev, ret = mwifiex_scan_networks(priv, priv->user_scan_cfg); if (ret) { dev_err(priv->adapter->dev, "scan failed: %d\n", ret); + priv->scan_request = NULL; + kfree(priv->user_scan_cfg); + priv->user_scan_cfg = NULL; return ret; }