ASoC: move dma_data from snd_soc_dai to snd_soc_pcm_stream
This fixes a memory corruption when ASoC devices are used in full-duplex mode. Specifically for pxa-ssp code, where this pointer is dynamically allocated for each direction and destroyed upon each stream start. All other platforms are fixed blindly, I couldn't even compile-test them. Sorry for any breakage I may have caused. Reported-by: Sven Neumann <s.neumann@raumfeld.com> Reported-by: Michael Hirsch <m.hirsch@raumfeld.com> Signed-off-by: Daniel Mack <daniel@caiaq.de> Acked-by: Peter Ujfalusi <peter.ujfalusi@nokia.com> Acked-by: Jarkko Nikula <jhnikula@gmail.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
这个提交包含在:
@@ -322,7 +322,9 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream,
|
||||
omap_mcbsp_dai_dma_params[id][substream->stream].sync_mode = sync_mode;
|
||||
omap_mcbsp_dai_dma_params[id][substream->stream].data_type =
|
||||
OMAP_DMA_DATA_TYPE_S16;
|
||||
cpu_dai->dma_data = &omap_mcbsp_dai_dma_params[id][substream->stream];
|
||||
|
||||
snd_soc_dai_set_dma_data(cpu_dai, substream,
|
||||
&omap_mcbsp_dai_dma_params[id][substream->stream]);
|
||||
|
||||
if (mcbsp_data->configured) {
|
||||
/* McBSP already configured by another stream */
|
||||
|
在新工单中引用
屏蔽一个用户