diff options
| author | Leela Venkata Kiran Kumar Reddy Chirala <kchirala@qca.qualcomm.com> | 2014-11-25 16:05:18 -0800 |
|---|---|---|
| committer | AnjaneeDevi Kapparapu <c_akappa@qti.qualcomm.com> | 2014-11-26 17:12:08 +0530 |
| commit | 4e31fb22bb1ed9caa2636bc079d03454c042c9e6 (patch) | |
| tree | aaf115da3cebbe88b51e2601e7dabe0cb1c05767 | |
| parent | cd8292b250a6d4c9136fd7752f718fb75978e0ac (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.c | 2 |
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; |
