diff options
-rw-r--r-- | drivers/soc/qcom/qdsp6v2/apr.c | 3 | ||||
-rw-r--r-- | sound/soc/msm/qdsp6v2/q6asm.c | 14 |
2 files changed, 8 insertions, 9 deletions
diff --git a/drivers/soc/qcom/qdsp6v2/apr.c b/drivers/soc/qcom/qdsp6v2/apr.c index a275537d4e08..2da8731c5753 100644 --- a/drivers/soc/qcom/qdsp6v2/apr.c +++ b/drivers/soc/qcom/qdsp6v2/apr.c @@ -745,13 +745,14 @@ int apr_deregister(void *handle) if (!handle) return -EINVAL; + mutex_lock(&svc->m_lock); if (!svc->svc_cnt) { pr_err("%s: svc already deregistered. svc = %pK\n", __func__, svc); + mutex_unlock(&svc->m_lock); return -EINVAL; } - mutex_lock(&svc->m_lock); dest_id = svc->dest_id; client_id = svc->client_id; clnt = &client[dest_id][client_id]; diff --git a/sound/soc/msm/qdsp6v2/q6asm.c b/sound/soc/msm/qdsp6v2/q6asm.c index ad17caf6ab94..0d142f77db50 100644 --- a/sound/soc/msm/qdsp6v2/q6asm.c +++ b/sound/soc/msm/qdsp6v2/q6asm.c @@ -1038,14 +1038,12 @@ void q6asm_audio_client_free(struct audio_client *ac) } rtac_set_asm_handle(ac->session, NULL); - if (!atomic_read(&ac->reset)) { - apr_deregister(ac->apr2); - apr_deregister(ac->apr); - q6asm_mmap_apr_dereg(); - ac->apr2 = NULL; - ac->apr = NULL; - ac->mmap_apr = NULL; - } + apr_deregister(ac->apr2); + apr_deregister(ac->apr); + q6asm_mmap_apr_dereg(); + ac->apr2 = NULL; + ac->apr = NULL; + ac->mmap_apr = NULL; q6asm_session_free(ac); pr_debug("%s: APR De-Register\n", __func__); |