ASoC: wm_adsp: Check for buffer in trigger stop
authorCharles Keepax <ckeepax@opensource.cirrus.com>
Tue, 2 Apr 2019 12:49:14 +0000 (13:49 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 3 Apr 2019 03:52:12 +0000 (10:52 +0700)
Trigger stop can be called in situations where trigger start failed
and as such it can't be assumed the buffer is already attached to
the compressed stream or a NULL pointer may be dereferenced.

Fixes: 639e5eb3c7d6 ("ASoC: wm_adsp: Correct handling of compressed streams that restart")
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/wm_adsp.c

index 5608ed5deccace2a64b9e3726da7ffda03b4f1ec..b0b48eb9c7c91578cb5d588955a0afa74f0ff262 100644 (file)
@@ -3587,7 +3587,8 @@ int wm_adsp_compr_trigger(struct snd_compr_stream *stream, int cmd)
                }
                break;
        case SNDRV_PCM_TRIGGER_STOP:
-               wm_adsp_buffer_clear(compr->buf);
+               if (wm_adsp_compr_attached(compr))
+                       wm_adsp_buffer_clear(compr->buf);
                break;
        default:
                ret = -EINVAL;