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

Commit d1bb34c1 authored by Hante Meuleman's avatar Hante Meuleman Committed by Kalle Valo
Browse files

brcmfmac: Only handle p2p_stop_device if vif is valid



In some situations it is possible that vif has been removed while
cfg80211 invokes the p2p_stop_device handler. This will result in
crash.

Reviewed-by: default avatarArend Van Spriel <arend@broadcom.com>
Reviewed-by: default avatarPieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: default avatarHante Meuleman <meuleman@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 9831bcb9
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -2327,12 +2327,18 @@ void brcmf_p2p_stop_device(struct wiphy *wiphy, struct wireless_dev *wdev)
	struct brcmf_cfg80211_vif *vif;

	vif = container_of(wdev, struct brcmf_cfg80211_vif, wdev);
	/* This call can be result of the unregister_wdev call. In that case
	 * we dont want to do anything anymore. Just return. The config vif
	 * will have been cleared at this point.
	 */
	if (p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif == vif) {
		mutex_lock(&cfg->usr_sync);
		(void)brcmf_p2p_deinit_discovery(p2p);
		brcmf_abort_scanning(cfg);
		clear_bit(BRCMF_VIF_STATUS_READY, &vif->sme_state);
		mutex_unlock(&cfg->usr_sync);
	}
}

/**
 * brcmf_p2p_attach() - attach for P2P.