On 11/15/2011 10:56 AM, Tabi Timur-B04825 wrote:
Something is wrong. When I apply this patch, I get this:
CC sound/soc/soc-core.o /home/b04825/git/linux.34/sound/soc/soc-core.c: In function 'soc_cleanup_card_resources': /home/b04825/git/linux.34/sound/soc/soc-core.c:1583:3: error: incompatible type for argument 1 of 'kfree' /home/b04825/git/linux.34/include/linux/slab.h:161:6: note: expected 'const void *' but argument is of type 'struct snd_pcm_ops'
/* free the ops */ for (i = 0; i< card->num_rtd; i++) { struct snd_soc_pcm_runtime *rtd =&card->rtd[i]; kfree(rtd->ops); }
rtd->ops is not a pointer, so it can't be freed. Also, this:
- rtd->ops = soc_pcm_ops;
is a memcpy. Why not just write to rtd->ops directly?
I see the problem. I implemented this under 2.6.38. rtd->ops was a pointer under 2.6.38. This could change much then.