diff options
| author | Laxminath Kasam <lkasam@codeaurora.org> | 2017-03-12 18:50:16 +0530 |
|---|---|---|
| committer | Laxminath Kasam <lkasam@codeaurora.org> | 2017-03-12 18:59:47 +0530 |
| commit | 5a51c2c5ef9f6b71dea7a876e28c6e089164089d (patch) | |
| tree | b001b6b3e37d7632e7b33e6584b522dcf89b471f | |
| parent | 54344baed6d626fa959d21f8801291dd366ee862 (diff) | |
ASoC: sdm660_cdc: Add null check in msm_dig_suspend
In digital codec, null codec pointer access can happen
in suspend call if module register happen with pm_ops
but soc codec register failed for some reason. Add null
check in msm_dig_suspend API to avoid crash scenarios.
Change-Id: I15acb69a1851b7865d2b3aa1b7cb70a4a73c63e3
Signed-off-by: Laxminath Kasam <lkasam@codeaurora.org>
| -rw-r--r-- | sound/soc/codecs/sdm660_cdc/msm-digital-cdc.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/sound/soc/codecs/sdm660_cdc/msm-digital-cdc.c b/sound/soc/codecs/sdm660_cdc/msm-digital-cdc.c index 91faee1ffd32..57d642f058b6 100644 --- a/sound/soc/codecs/sdm660_cdc/msm-digital-cdc.c +++ b/sound/soc/codecs/sdm660_cdc/msm-digital-cdc.c @@ -2085,10 +2085,18 @@ static int msm_dig_cdc_remove(struct platform_device *pdev) #ifdef CONFIG_PM static int msm_dig_suspend(struct device *dev) { - struct msm_asoc_mach_data *pdata = - snd_soc_card_get_drvdata(registered_digcodec->component.card); + struct msm_asoc_mach_data *pdata; struct msm_dig_priv *msm_dig_cdc = dev_get_drvdata(dev); + if (!registered_digcodec || !msm_dig_cdc) { + pr_debug("%s:digcodec not initialized, return\n", __func__); + return 0; + } + pdata = snd_soc_card_get_drvdata(registered_digcodec->component.card); + if (!pdata) { + pr_debug("%s:card not initialized, return\n", __func__); + return 0; + } if (msm_dig_cdc->dapm_bias_off) { pr_debug("%s: mclk cnt = %d, mclk_enabled = %d\n", __func__, atomic_read(&pdata->int_mclk0_rsc_ref), |
