mac80211: fix missing unlock on error in ieee80211_mark_sta_auth()

Add the missing unlock before return from function
ieee80211_mark_sta_auth() in the error handling case.

Cc: stable@vger.kernel.org
Fixes: fc107a9330 ("mac80211: Helper function for marking STA authenticated")
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
[use result variable/label instead of duplicating]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Wei Yongjun 2018-10-16 02:35:30 +00:00 committed by Johannes Berg
parent 05cc09de4c
commit 33483a6b88
1 changed files with 8 additions and 4 deletions

View File

@ -2766,6 +2766,7 @@ static bool ieee80211_mark_sta_auth(struct ieee80211_sub_if_data *sdata,
{ {
struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
struct sta_info *sta; struct sta_info *sta;
bool result = true;
sdata_info(sdata, "authenticated\n"); sdata_info(sdata, "authenticated\n");
ifmgd->auth_data->done = true; ifmgd->auth_data->done = true;
@ -2778,15 +2779,18 @@ static bool ieee80211_mark_sta_auth(struct ieee80211_sub_if_data *sdata,
sta = sta_info_get(sdata, bssid); sta = sta_info_get(sdata, bssid);
if (!sta) { if (!sta) {
WARN_ONCE(1, "%s: STA %pM not found", sdata->name, bssid); WARN_ONCE(1, "%s: STA %pM not found", sdata->name, bssid);
return false; result = false;
goto out;
} }
if (sta_info_move_state(sta, IEEE80211_STA_AUTH)) { if (sta_info_move_state(sta, IEEE80211_STA_AUTH)) {
sdata_info(sdata, "failed moving %pM to auth\n", bssid); sdata_info(sdata, "failed moving %pM to auth\n", bssid);
return false; result = false;
goto out;
} }
mutex_unlock(&sdata->local->sta_mtx);
return true; out:
mutex_unlock(&sdata->local->sta_mtx);
return result;
} }
static void ieee80211_rx_mgmt_auth(struct ieee80211_sub_if_data *sdata, static void ieee80211_rx_mgmt_auth(struct ieee80211_sub_if_data *sdata,