mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
wil6210: fix protection against connections during reset
[ Upstream commit b819447dfc ]
Existing code that ignores connection events during
reset flow will never take effect since it locks the
same mutex taken by the reset flow.
In addition, in case of unsolicited disconnect events ignore
those as well since device is about to get reset.
Signed-off-by: Hamad Kadmany <qca_hkadmany@qca.qualcomm.com>
Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
0a83f6943a
commit
c7fd50a893
@@ -501,16 +501,16 @@ static void wmi_evt_connect(struct wil6210_priv *wil, int id, void *d, int len)
|
||||
assoc_resp_ielen = 0;
|
||||
}
|
||||
|
||||
mutex_lock(&wil->mutex);
|
||||
if (test_bit(wil_status_resetting, wil->status) ||
|
||||
!test_bit(wil_status_fwready, wil->status)) {
|
||||
wil_err(wil, "status_resetting, cancel connect event, CID %d\n",
|
||||
evt->cid);
|
||||
mutex_unlock(&wil->mutex);
|
||||
/* no need for cleanup, wil_reset will do that */
|
||||
return;
|
||||
}
|
||||
|
||||
mutex_lock(&wil->mutex);
|
||||
|
||||
if ((wdev->iftype == NL80211_IFTYPE_STATION) ||
|
||||
(wdev->iftype == NL80211_IFTYPE_P2P_CLIENT)) {
|
||||
if (!test_bit(wil_status_fwconnecting, wil->status)) {
|
||||
@@ -608,6 +608,13 @@ static void wmi_evt_disconnect(struct wil6210_priv *wil, int id,
|
||||
|
||||
wil->sinfo_gen++;
|
||||
|
||||
if (test_bit(wil_status_resetting, wil->status) ||
|
||||
!test_bit(wil_status_fwready, wil->status)) {
|
||||
wil_err(wil, "status_resetting, cancel disconnect event\n");
|
||||
/* no need for cleanup, wil_reset will do that */
|
||||
return;
|
||||
}
|
||||
|
||||
mutex_lock(&wil->mutex);
|
||||
wil6210_disconnect(wil, evt->bssid, reason_code, true);
|
||||
mutex_unlock(&wil->mutex);
|
||||
|
||||
Reference in New Issue
Block a user