From a801ad8fd789077d77580f59c2504d98d5d92de2 Mon Sep 17 00:00:00 2001 From: Meng Wang Date: Tue, 15 Oct 2019 11:19:11 +0800 Subject: [PATCH] dsp: lsm: move lsm_common deregister out of mutex_lock 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 for lsm_common. Move lsm_common mmap apr deregister out of mutex_lock to avoid deadlock. Change-Id: I7c96ba12834bd4a7c8e5ca1b78d798578678b251 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 9c5bf3d30dee..5c97dcf5a6e0 100644 --- a/dsp/q6lsm.c +++ b/dsp/q6lsm.c @@ -376,10 +376,10 @@ void q6lsm_client_free(struct lsm_client *client) return; } apr_deregister(client->apr); + q6lsm_mmap_apr_dereg(); client->mmap_apr = NULL; mutex_lock(&session_lock); q6lsm_session_free(client); - q6lsm_mmap_apr_dereg(); mutex_destroy(&client->cmd_lock); kfree(client); client = NULL;