| From 43d147be5738a9ed6cfb25c285ac50d6dd5793be Mon Sep 17 00:00:00 2001 |
| From: Charles Keepax <ckeepax@opensource.cirrus.com> |
| Date: Tue, 2 Apr 2019 13:49:14 +0100 |
| Subject: ASoC: wm_adsp: Check for buffer in trigger stop |
| |
| From: Charles Keepax <ckeepax@opensource.cirrus.com> |
| |
| commit 43d147be5738a9ed6cfb25c285ac50d6dd5793be upstream. |
| |
| 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> |
| Cc: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| sound/soc/codecs/wm_adsp.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/sound/soc/codecs/wm_adsp.c |
| +++ b/sound/soc/codecs/wm_adsp.c |
| @@ -3454,7 +3454,8 @@ int wm_adsp_compr_trigger(struct snd_com |
| } |
| 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; |