Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 97518af1 authored by Michal Kazior's avatar Michal Kazior Committed by Johannes Berg
Browse files

mac80211: fix possible memory leak on AP CSA failure



If CSA for AP interface failed and the interface
was not stopped afterwards another CSA request
would leak sdata->u.ap.next_beacon.

Signed-off-by: default avatarMichal Kazior <michal.kazior@tieto.com>
Reviewed-by: default avatarLuciano Coelho <luciano.coelho@intel.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent faf046e7
Loading
Loading
Loading
Loading
+3 −2
Original line number Original line Diff line number Diff line
@@ -3018,11 +3018,12 @@ static void ieee80211_csa_finalize(struct ieee80211_sub_if_data *sdata)
	switch (sdata->vif.type) {
	switch (sdata->vif.type) {
	case NL80211_IFTYPE_AP:
	case NL80211_IFTYPE_AP:
		err = ieee80211_assign_beacon(sdata, sdata->u.ap.next_beacon);
		err = ieee80211_assign_beacon(sdata, sdata->u.ap.next_beacon);
		kfree(sdata->u.ap.next_beacon);
		sdata->u.ap.next_beacon = NULL;

		if (err < 0)
		if (err < 0)
			return;
			return;
		changed |= err;
		changed |= err;
		kfree(sdata->u.ap.next_beacon);
		sdata->u.ap.next_beacon = NULL;
		break;
		break;
	case NL80211_IFTYPE_ADHOC:
	case NL80211_IFTYPE_ADHOC:
		err = ieee80211_ibss_finish_csa(sdata);
		err = ieee80211_ibss_finish_csa(sdata);