diff options
| author | Dustin Brown <dustinb@codeaurora.org> | 2016-12-02 16:01:08 -0800 |
|---|---|---|
| committer | qcabuildsw <qcabuildsw@localhost> | 2016-12-05 17:03:10 -0800 |
| commit | ebd56ccddf7aaae3c637a40fdbba8c1f23ab5feb (patch) | |
| tree | cd540f21d7499d833fa3b2b3a7214bb4dfa64fae | |
| parent | 25ec2c0096abcd53f6ced01c1cbe51b92698344f (diff) | |
qcacld-3.0: Fix out-of-order completion variable usage
hdd_wlan_get_ibss_peer_info() and hdd_wlan_get_ibss_peer_info_all()
initialize their completion variables after scheduling work, leading to
a race condition that can cause the completion variable to be set before
it is initialized. Reorder the operations so work is scheduled after
initializing the completion variables.
Change-Id: Ic773574f3620438b473cd5bcebee78ad87a37942
CRs-Fixed: 1074692
| -rw-r--r-- | core/hdd/src/wlan_hdd_wext.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/core/hdd/src/wlan_hdd_wext.c b/core/hdd/src/wlan_hdd_wext.c index 591ff4032f75..56b7296c072c 100644 --- a/core/hdd/src/wlan_hdd_wext.c +++ b/core/hdd/src/wlan_hdd_wext.c @@ -852,11 +852,10 @@ static QDF_STATUS hdd_wlan_get_ibss_peer_info(hdd_adapter_t *pAdapter, hdd_station_ctx_t *pStaCtx = WLAN_HDD_GET_STATION_CTX_PTR(pAdapter); tSirPeerInfoRspParams *pPeerInfo = &pStaCtx->ibss_peer_info; - status = - sme_request_ibss_peer_info(hHal, pAdapter, hdd_get_ibss_peer_info_cb, - false, staIdx); - INIT_COMPLETION(pAdapter->ibss_peer_info_comp); + status = sme_request_ibss_peer_info(hHal, pAdapter, + hdd_get_ibss_peer_info_cb, + false, staIdx); if (QDF_STATUS_SUCCESS == status) { unsigned long rc; @@ -902,10 +901,10 @@ static QDF_STATUS hdd_wlan_get_ibss_peer_info_all(hdd_adapter_t *pAdapter) tSirPeerInfoRspParams *pPeerInfo = &pStaCtx->ibss_peer_info; int i; - status = - sme_request_ibss_peer_info(hHal, pAdapter, hdd_get_ibss_peer_info_cb, - true, 0xFF); INIT_COMPLETION(pAdapter->ibss_peer_info_comp); + status = sme_request_ibss_peer_info(hHal, pAdapter, + hdd_get_ibss_peer_info_cb, + true, 0xFF); if (QDF_STATUS_SUCCESS == status) { unsigned long rc; |
