ASoC: don't dereference NULL pcm_{new,free}
Not all platform drivers have pcm_{new,free} callbacks. Seen with a
"snd-soc-dummy" codec from sound/soc/rockchip/rk3399_gru_sound.c.
Fixes: 99b04f4c40
("ASoC: add Component level pcm_new/pcm_free")
Signed-off-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
@@ -3326,7 +3326,10 @@ static int snd_soc_platform_drv_pcm_new(struct snd_soc_pcm_runtime *rtd)
|
|||||||
{
|
{
|
||||||
struct snd_soc_platform *platform = rtd->platform;
|
struct snd_soc_platform *platform = rtd->platform;
|
||||||
|
|
||||||
|
if (platform->driver->pcm_new)
|
||||||
return platform->driver->pcm_new(rtd);
|
return platform->driver->pcm_new(rtd);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void snd_soc_platform_drv_pcm_free(struct snd_pcm *pcm)
|
static void snd_soc_platform_drv_pcm_free(struct snd_pcm *pcm)
|
||||||
@@ -3334,6 +3337,7 @@ static void snd_soc_platform_drv_pcm_free(struct snd_pcm *pcm)
|
|||||||
struct snd_soc_pcm_runtime *rtd = pcm->private_data;
|
struct snd_soc_pcm_runtime *rtd = pcm->private_data;
|
||||||
struct snd_soc_platform *platform = rtd->platform;
|
struct snd_soc_platform *platform = rtd->platform;
|
||||||
|
|
||||||
|
if (platform->driver->pcm_free)
|
||||||
platform->driver->pcm_free(pcm);
|
platform->driver->pcm_free(pcm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user