This patch fixes possible recursive locking detection.The implementation in which the spinlock is acquired and released is rectified in WMD_MSG_Get() to avoid locking contention. Added SYNC_EnterCS() and SYNC_LeaveCS()in WMD_MSG_Get()function. Cc: Ameya Palande <ameya.palande@xxxxxxxxx> Cc: Omar Ramirez Luna <omar.ramirez@xxxxxx> Cc: Nishanth Menon <nm@xxxxxx> Signed-off-by: Deepak Chitriki <deepak.chitriki@xxxxxx> --- drivers/dsp/bridge/wmd/msg_sm.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/drivers/dsp/bridge/wmd/msg_sm.c b/drivers/dsp/bridge/wmd/msg_sm.c index 50201e5..8faf5ad 100644 --- a/drivers/dsp/bridge/wmd/msg_sm.c +++ b/drivers/dsp/bridge/wmd/msg_sm.c @@ -300,8 +300,10 @@ DSP_STATUS WMD_MSG_Get(struct MSG_QUEUE *hMsgQueue, if (LST_IsEmpty(hMsgQueue->msgUsedList)) SYNC_ResetEvent(hMsgQueue->hSyncEvent); else { + (void)SYNC_LeaveCS(hMsgMgr->hSyncCS); NTFY_Notify(hMsgQueue->hNtfy, DSP_NODEMESSAGEREADY); + (void)SYNC_EnterCS(hMsgMgr->hSyncCS); SYNC_SetEvent(hMsgQueue->hSyncEvent); } @@ -352,8 +354,10 @@ DSP_STATUS WMD_MSG_Get(struct MSG_QUEUE *hMsgQueue, hMsgQueue->refCount--; /* Reset the event if there are still queued messages */ if (!LST_IsEmpty(hMsgQueue->msgUsedList)) { + (void)SYNC_LeaveCS(hMsgMgr->hSyncCS); NTFY_Notify(hMsgQueue->hNtfy, DSP_NODEMESSAGEREADY); + (void)SYNC_EnterCS(hMsgMgr->hSyncCS); SYNC_SetEvent(hMsgQueue->hSyncEvent); } /* Exit critical section */ -- 1.6.3.3 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html