CHROMIUM: mwifiex: Clean up scan state on error
authorPaul Stewart <pstew@chromium.org>
Fri, 12 Oct 2012 23:55:03 +0000 (16:55 -0700)
committerGerrit <chrome-bot@google.com>
Sat, 13 Oct 2012 21:52:08 +0000 (14:52 -0700)
De-reference and deallocate scan state on failure.

Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: Paul Stewart <pstew@chromium.org>
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 <bzhao@marvell.com>
Reviewed-by: Ryan Cairns <rtc@chromium.org>
Commit-Ready: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
drivers/net/wireless/mwifiex/cfg80211.c

index 1d93761..9c63461 100644 (file)
@@ -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;
        }