Merge "wlan: Protect ROC ctx with mutex lock during request ROC."
diff --git a/CORE/HDD/src/wlan_hdd_p2p.c b/CORE/HDD/src/wlan_hdd_p2p.c
index bf84bab..5ad882b 100644
--- a/CORE/HDD/src/wlan_hdd_p2p.c
+++ b/CORE/HDD/src/wlan_hdd_p2p.c
@@ -711,12 +711,15 @@
return -EBUSY;
}
+ mutex_lock(&pHddCtx->roc_lock);
+
pRemainChanCtx = vos_mem_malloc( sizeof(hdd_remain_on_chan_ctx_t) );
if( NULL == pRemainChanCtx )
{
hddLog(VOS_TRACE_LEVEL_FATAL,
"%s: Not able to allocate memory for Channel context",
__func__);
+ mutex_unlock(&pHddCtx->roc_lock);
return -ENOMEM;
}
@@ -754,6 +757,9 @@
{
if (pRemainChanCtx->duration > HDD_P2P_MAX_ROC_DURATION)
pRemainChanCtx->duration = HDD_P2P_MAX_ROC_DURATION;
+
+ mutex_unlock(&pHddCtx->roc_lock);
+
schedule_delayed_work(&pAdapter->roc_work,
msecs_to_jiffies(pHddCtx->cfg_ini->gP2PListenDeferInterval));
hddLog(VOS_TRACE_LEVEL_INFO, "Defer interval is %hu, pAdapter %p",
@@ -763,6 +769,7 @@
}
}
+ mutex_unlock(&pHddCtx->roc_lock);
status = wlan_hdd_p2p_start_remain_on_channel(pAdapter);
EXIT();