ASoC: Intel: Fix conflicting pcm dev drvdata on haswell
authorBen Zhang <benzh@chromium.org>
Fri, 8 Jul 2016 01:54:56 +0000 (18:54 -0700)
committerMark Brown <broonie@kernel.org>
Thu, 14 Jul 2016 16:30:03 +0000 (17:30 +0100)
soc-core sets the snd_soc_pcm_runtime->dev drvdata to
snd_soc_pcm_runtime in soc_post_component_init, and access
it in places like codec_reg_show.

hsw_pcm_open overwrites the drvdata to point to hsw_pcm_data,
confusing soc-core, and causing crashes when cat
/sys/devices/pci0000:00/INT3438:00/.../System PCM/codec_reg

This patch removes the set in hsw_pcm_open since it's no longer
used. commit 7ff9d6714a5c ("ASoC: Intel: Split hsw_pcm_data for
playback and capture") already removed all calls to
snd_soc_pcm_get_drvdata(rtd).

Signed-off-by: Ben Zhang <benzh@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/haswell/sst-haswell-pcm.c

index 994256b..3154525 100644 (file)
@@ -819,7 +819,6 @@ static int hsw_pcm_open(struct snd_pcm_substream *substream)
        mutex_lock(&pcm_data->mutex);
        pm_runtime_get_sync(pdata->dev);
 
-       snd_soc_pcm_set_drvdata(rtd, pcm_data);
        pcm_data->substream = substream;
 
        snd_soc_set_runtime_hwparams(substream, &hsw_pcm_hardware);