# HG changeset patch # User fam@procyon # Date 1167417628 18000 # Node ID db7345e709ceb94df2cce3ea8ea7d32cc83d789e # Parent 4eae1a19406e9e14c38efdef7fb1bd603200485d ASoC at91 - Fix NULL pointer dereference in at91_i2s_shutdown at91_i2s_shutdown() depends on the snd_soc_cpu_dai dma_data field being NULL if the substream's DMA parameters were not set up. However, if a substream was started, then shutdown before the DMA parameters were setup, the dma_data field would still contain the value that was set for a previous substream, which pointed to an invalid at91_pcm_dma_params structure. The fix is to initialize the dma_data field to NULL when the substream is started. Signed-off-by: Frank Mandarino Signed-off-by: Liam Girdwood diff -r 4eae1a19406e -r db7345e709ce soc/at91/at91-i2s.c --- a/soc/at91/at91-i2s.c Thu Dec 28 13:56:48 2006 +0100 +++ b/soc/at91/at91-i2s.c Fri Dec 29 13:40:28 2006 -0500 @@ -295,6 +295,13 @@ static int at91_i2s_startup(struct snd_p } ssc_p->dir_mask |= dir_mask; spin_unlock_irq(&ssc_p->lock); + + /* + * dma_data is not set until hw_params() is called and + * shutdown() depends on this value being NULL if hw_params() + * was not called. + */ + rtd->cpu_dai->dma_data = NULL; return 0; }