From c893cd2e0d77b6b24f57dbf4d79b5ad521975f50 Mon Sep 17 00:00:00 2001 From: Meng Wang Date: Mon, 9 Sep 2019 09:27:45 +0800 Subject: [PATCH] dsp: lsm: add apr NULL check in apr deregister During SSR, q6lsm_mmapcallback could happen before q6lsm_mmap_apr_dereg. q6lsm_common.apr and q6lsm_common.apr_users are cleared in q6lsm_mmapcallback. Add apr NULL check in q6lsm_mmap_apr_dereg before accessing q6lsm_common.apr_users. Change-Id: Ia0ff57b3fff0a0e4f26b836a8a15324406af1a14 Signed-off-by: Meng Wang --- dsp/q6lsm.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/dsp/q6lsm.c b/dsp/q6lsm.c index d27bbac68e88..07f47e519a6d 100644 --- a/dsp/q6lsm.c +++ b/dsp/q6lsm.c @@ -285,12 +285,15 @@ static void *q6lsm_mmap_apr_reg(void) static int q6lsm_mmap_apr_dereg(void) { - if (atomic_read(&lsm_common.apr_users) <= 0) { - WARN("%s: APR common port already closed\n", __func__); - } else { - if (atomic_dec_return(&lsm_common.apr_users) == 0) { - apr_deregister(lsm_common.apr); - pr_debug("%s: APR De-Register common port\n", __func__); + if (lsm_common.apr) { + if (atomic_read(&lsm_common.apr_users) <= 0) { + WARN("%s: APR common port already closed\n", __func__); + } else { + if (atomic_dec_return(&lsm_common.apr_users) == 0) { + apr_deregister(lsm_common.apr); + pr_debug("%s: APR De-Register common port\n", + __func__); + } } } return 0;