ALSA: 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.
[Note that this is a backported version for 2.6.34.
Upstream commit is fd23b7dee
]
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Reported-by: Sven Neumann <s.neumann@raumfeld.com>
Reported-by: Michael Hirsch <m.hirsch@raumfeld.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
这个提交包含在:
@@ -363,12 +363,12 @@ static int atmel_ssc_hw_params(struct snd_pcm_substream *substream,
|
||||
ssc_p->dma_params[dir] = dma_params;
|
||||
|
||||
/*
|
||||
* The cpu_dai->dma_data field is only used to communicate the
|
||||
* appropriate DMA parameters to the pcm driver hw_params()
|
||||
* The snd_soc_pcm_stream->dma_data field is only used to communicate
|
||||
* the appropriate DMA parameters to the pcm driver hw_params()
|
||||
* function. It should not be used for other purposes
|
||||
* as it is common to all substreams.
|
||||
*/
|
||||
rtd->dai->cpu_dai->dma_data = dma_params;
|
||||
snd_soc_dai_set_dma_data(rtd->dai->cpu_dai, substream, dma_params);
|
||||
|
||||
channels = params_channels(params);
|
||||
|
||||
|
在新工单中引用
屏蔽一个用户