From 818d4e9b7ff277c7936c31e3b8dfd8814d95cce2 Mon Sep 17 00:00:00 2001 From: Meng Wang Date: Mon, 26 Aug 2019 16:49:28 +0800 Subject: [PATCH] dsp: lsm: adjust mutex_lock to avoid deadlock When dispatch_event in apr and q6lsm_client_free in q6lsm are running concurrently, there may be deadlock between session_lock in lsm and svc->m_lock in apr. Adjust session_lock in q6lsm_client_free to avoid deadlock. Change-Id: I26eb788d4c17af78272dd1f717717e865dfbd0ac Signed-off-by: Meng Wang --- dsp/q6lsm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dsp/q6lsm.c b/dsp/q6lsm.c index d55dfc313c39..d27bbac68e88 100644 --- a/dsp/q6lsm.c +++ b/dsp/q6lsm.c @@ -372,9 +372,9 @@ void q6lsm_client_free(struct lsm_client *client) pr_err("%s: Invalid Session %d\n", __func__, client->session); return; } - mutex_lock(&session_lock); apr_deregister(client->apr); client->mmap_apr = NULL; + mutex_lock(&session_lock); q6lsm_session_free(client); q6lsm_mmap_apr_dereg(); mutex_destroy(&client->cmd_lock);