diff --git a/sound/soc/rk29/rk29_pcm.c b/sound/soc/rk29/rk29_pcm.c index 689a9910f71e..a2cb3e96a8dc 100755 --- a/sound/soc/rk29/rk29_pcm.c +++ b/sound/soc/rk29/rk29_pcm.c @@ -413,10 +413,14 @@ static int rockchip_pcm_close(struct snd_pcm_substream *substream) struct rockchip_dma_buf_set *sg_buf = NULL; DBG("Enter::%s----%d\n",__FUNCTION__,__LINE__); - if (!prtd) + if (!prtd) { DBG("rockchip_pcm_close called with prtd == NULL\n"); - if (prtd) - sg_buf = prtd->curr; + return 0; + } + + if (prtd->params) + rk29_dma_set_buffdone_fn(prtd->params->channel, NULL); + sg_buf = prtd->curr; while (sg_buf != NULL) { prtd->curr = sg_buf->next;