summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/soc/qcom/qdsp6v2/apr.c3
-rw-r--r--sound/soc/msm/qdsp6v2/q6asm.c14
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__);