summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeela Venkata Kiran Kumar Reddy Chirala <kchirala@qca.qualcomm.com>2014-11-25 16:05:18 -0800
committerAnjaneeDevi Kapparapu <c_akappa@qti.qualcomm.com>2014-11-26 17:12:08 +0530
commit4e31fb22bb1ed9caa2636bc079d03454c042c9e6 (patch)
treeaaf115da3cebbe88b51e2601e7dabe0cb1c05767
parentcd8292b250a6d4c9136fd7752f718fb75978e0ac (diff)
qcacld-2.0: Fix the deadlock between supplicant and MC thread
MC thread is normally processing SME pending queue and while doing so it acquires SME active list lock and calls SME abort command to abort RoC request which it leads to call HDD P2P RoC callback which in turn calls SME API which tries to acquire SME global lock which is already acquired by supplicant and leads to deadlock. Fix this deadlock by releasing the SME active list lock before calling the SME abort command Change-Id: I6e8d5cdeb81587852d81ef923cc2005b9e7baa85 CRs-fixed: 762912
-rw-r--r--CORE/SME/src/sme_common/sme_Api.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index f926ed6ee90c..3189ca2770e1 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -820,12 +820,12 @@ sme_process_cmd:
pmcCommand = smeIsFullPowerNeeded( pMac, pCommand );
if( eSmeDropCommand == pmcCommand )
{
+ csrLLUnlock(&pMac->sme.smeCmdActiveList);
//This command is not ok for current PMC state
if( csrLLRemoveEntry( &pMac->sme.smeCmdPendingList, pEntry, LL_ACCESS_LOCK ) )
{
smeAbortCommand( pMac, pCommand, eANI_BOOLEAN_FALSE );
}
- csrLLUnlock( &pMac->sme.smeCmdActiveList );
//tell caller to continue
fContinue = eANI_BOOLEAN_TRUE;
goto sme_process_scan_queue;