From b83f8c4c4370876fec64ef18a00598b560db3258 Mon Sep 17 00:00:00 2001 From: Vatsal Bucha Date: Sat, 9 Jan 2021 22:04:39 +0530 Subject: [PATCH] ASoC: wcd-mbhc: Check if mutex is locked before mutex destroy Mutex destroy is called as part of wcd_mbhc_deinit during SSR for hph pa lock when lock is taken resulting in warning. Check if mutex is locked and unlock mutex before destroy so as to remove warning. Change-Id: I521903f9ab24222278d6fb3f349da18c98131c60 Signed-off-by: Vatsal Bucha --- asoc/codecs/wcd-mbhc-v2.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/asoc/codecs/wcd-mbhc-v2.c b/asoc/codecs/wcd-mbhc-v2.c index 17ce0ef7903e..47f02857828f 100644 --- a/asoc/codecs/wcd-mbhc-v2.c +++ b/asoc/codecs/wcd-mbhc-v2.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -/* Copyright (c) 2015-2020, The Linux Foundation. All rights reserved. +/* Copyright (c) 2015-2021, The Linux Foundation. All rights reserved. */ #include #include @@ -328,7 +328,8 @@ out_micb_en: else /* Disable micbias, pullup & enable cs */ wcd_enable_curr_micbias(mbhc, WCD_MBHC_EN_CS); - mutex_unlock(&mbhc->hphl_pa_lock); + if (mutex_is_locked(&mbhc->hphl_pa_lock)) + mutex_unlock(&mbhc->hphl_pa_lock); clear_bit(WCD_MBHC_ANC0_OFF_ACK, &mbhc->hph_anc_state); break; case WCD_EVENT_PRE_HPHR_PA_OFF: @@ -348,7 +349,8 @@ out_micb_en: else /* Disable micbias, pullup & enable cs */ wcd_enable_curr_micbias(mbhc, WCD_MBHC_EN_CS); - mutex_unlock(&mbhc->hphr_pa_lock); + if (mutex_is_locked(&mbhc->hphr_pa_lock)) + mutex_unlock(&mbhc->hphr_pa_lock); clear_bit(WCD_MBHC_ANC1_OFF_ACK, &mbhc->hph_anc_state); break; case WCD_EVENT_PRE_HPHL_PA_ON: @@ -2067,6 +2069,10 @@ void wcd_mbhc_deinit(struct wcd_mbhc *mbhc) WCD_MBHC_RSC_UNLOCK(mbhc); } mutex_destroy(&mbhc->codec_resource_lock); + if (mutex_is_locked(&mbhc->hphl_pa_lock)) + mutex_unlock(&mbhc->hphl_pa_lock); + if (mutex_is_locked(&mbhc->hphr_pa_lock)) + mutex_unlock(&mbhc->hphr_pa_lock); mutex_destroy(&mbhc->hphl_pa_lock); mutex_destroy(&mbhc->hphr_pa_lock); }