qcacld-3.0: Release serialization cmd when get peer null
In P2P connect process, GO and GC send deauth/disassoc at the end of WPS. GO send disassoc and free station info. GO receive deauth from GC, and send cmd WLAN_SER_CMD_GET_DISCONNECT_STATS to get disconnect stats. If GO send deauth and free peer info before receive deauth from GC. Wlan_objmgr_get_peer return null, and peer is null. Cmd of WLAN_SER_CMD_GET_DISCONNECT_STATS will never be released since get_peer_rssi_cb will never be called. And cmd will timeout, which is not expected. If we call get_peer_rssi_cb without check, cmd will release. Also csr_get_peer_rssi_cb will check peer is null or not. Change-Id: I10b496526e259711a4dd7a91b7388ac79bb54fef CRs-Fixed: 3119513
This commit is contained in:

committed by
Madan Koyyalamudi

parent
4e3884f464
commit
6e475e2bff
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||||
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -305,8 +305,7 @@ tgt_mc_cp_stats_prepare_raw_peer_rssi(struct wlan_objmgr_psoc *psoc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
end:
|
end:
|
||||||
if (ev.peer_stats)
|
get_peer_rssi_cb(&ev, last_req->cookie);
|
||||||
get_peer_rssi_cb(&ev, last_req->cookie);
|
|
||||||
|
|
||||||
ucfg_mc_cp_stats_free_stats_resources(&ev);
|
ucfg_mc_cp_stats_free_stats_resources(&ev);
|
||||||
|
|
||||||
|
@@ -419,6 +419,11 @@ static void get_peer_rssi_cb(struct stats_event *ev, void *cookie)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!ev->peer_stats) {
|
||||||
|
osif_err("no peer stats");
|
||||||
|
goto get_peer_rssi_cb_fail;
|
||||||
|
}
|
||||||
|
|
||||||
priv = osif_request_priv(request);
|
priv = osif_request_priv(request);
|
||||||
rssi_size = sizeof(*ev->peer_stats) * ev->num_peer_stats;
|
rssi_size = sizeof(*ev->peer_stats) * ev->num_peer_stats;
|
||||||
if (rssi_size == 0) {
|
if (rssi_size == 0) {
|
||||||
|
Reference in New Issue
Block a user