Skip to content

Commit

Permalink
mwifiex: fix possible memory leak in mwifiex_cfg80211_start_ap()
Browse files Browse the repository at this point in the history
memory is malloced in mwifiex_cfg80211_start_ap() and should be
freed before leaving from the error handling cases, otherwise it
will cause memory leak.

Signed-off-by: Wei Yongjun <[email protected]>
Signed-off-by: Kalle Valo <[email protected]>
  • Loading branch information
Wei Yongjun authored and Kalle Valo committed Jul 18, 2016
1 parent 83d58d5 commit 4028a51
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions drivers/net/wireless/marvell/mwifiex/cfg80211.c
Original file line number Diff line number Diff line change
Expand Up @@ -1936,10 +1936,9 @@ static int mwifiex_cfg80211_start_ap(struct wiphy *wiphy,
mwifiex_set_uap_rates(bss_cfg, params);

if (mwifiex_set_secure_params(priv, bss_cfg, params)) {
kfree(bss_cfg);
mwifiex_dbg(priv->adapter, ERROR,
"Failed to parse secuirty parameters!\n");
return -1;
goto out;
}

mwifiex_set_ht_params(priv, bss_cfg, params);
Expand Down Expand Up @@ -1968,20 +1967,19 @@ static int mwifiex_cfg80211_start_ap(struct wiphy *wiphy,
if (mwifiex_11h_activate(priv, false)) {
mwifiex_dbg(priv->adapter, ERROR,
"Failed to disable 11h extensions!!");
return -1;
goto out;
}
priv->state_11h.is_11h_active = false;
}

if (mwifiex_config_start_uap(priv, bss_cfg)) {
mwifiex_dbg(priv->adapter, ERROR,
"Failed to start AP\n");
kfree(bss_cfg);
return -1;
goto out;
}

if (mwifiex_set_mgmt_ies(priv, &params->beacon))
return -1;
goto out;

if (!netif_carrier_ok(priv->netdev))
netif_carrier_on(priv->netdev);
Expand All @@ -1990,6 +1988,10 @@ static int mwifiex_cfg80211_start_ap(struct wiphy *wiphy,
memcpy(&priv->bss_cfg, bss_cfg, sizeof(priv->bss_cfg));
kfree(bss_cfg);
return 0;

out:
kfree(bss_cfg);
return -1;
}

/*
Expand Down

0 comments on commit 4028a51

Please sign in to comment.