Merge "wlan: Protect ROC ctx with mutex lock during mgmt TX and TX Timeout"
diff --git a/CORE/HDD/src/wlan_hdd_p2p.c b/CORE/HDD/src/wlan_hdd_p2p.c
index 88ea08a..1ad7e4e 100644
--- a/CORE/HDD/src/wlan_hdd_p2p.c
+++ b/CORE/HDD/src/wlan_hdd_p2p.c
@@ -1423,13 +1423,12 @@
vos_mem_copy( cfgState->buf, buf, len);
+ mutex_lock(&pHddCtx->roc_lock);
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
if( cfgState->remain_on_chan_ctx )
{
- mutex_lock(&pHddCtx->roc_lock);
cfgState->action_cookie = cfgState->remain_on_chan_ctx->cookie;
*cookie = cfgState->action_cookie;
- mutex_unlock(&pHddCtx->roc_lock);
}
else
{
@@ -1439,6 +1438,7 @@
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
}
#endif
+ mutex_unlock(&pHddCtx->roc_lock);
}
if ( (WLAN_HDD_INFRA_STATION == pAdapter->device_mode) ||
diff --git a/CORE/HDD/src/wlan_hdd_tx_rx.c b/CORE/HDD/src/wlan_hdd_tx_rx.c
index 747f2a8..962e47f 100644
--- a/CORE/HDD/src/wlan_hdd_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_tx_rx.c
@@ -1174,10 +1174,11 @@
"%s: Request firmware for recovery",__func__);
WLANTL_TLDebugMessage(WLANTL_DEBUG_FW_CLEANUP);
}
-
+ mutex_lock(&pHddCtx->roc_lock);
pRemainChanCtx = hdd_get_remain_on_channel_ctx(pHddCtx);
if (!pRemainChanCtx)
{
+ mutex_unlock(&pHddCtx->roc_lock);
if (pAdapter->hdd_stats.hddTxRxStats.continuousTxTimeoutCount >
HDD_TX_STALL_SSR_THRESHOLD)
{
@@ -1191,6 +1192,7 @@
}
else
{
+ mutex_unlock(&pHddCtx->roc_lock);
VOS_TRACE(VOS_MODULE_ID_HDD_DATA, VOS_TRACE_LEVEL_ERROR,
"Remain on channel in progress");
/* The supplicant can retry "P2P Invitation Request" for 120 times