Re: [PATCH] ASoC: SOF: Don't allow pointer operations on unconfigured streams

From: Péter Ujfalusi

Date: Fri Mar 27 2026 - 05:53:50 EST




On 26/03/2026 16:52, Mark Brown wrote:
> When reporting the pointer for a compressed stream we report the current
> I/O frame position by dividing the position by the number of channels
> multiplied by the number of container bytes. These values default to 0 and
> are only configured as part of setting the stream parameters so this allows
> a divide by zero to be configured. Validate that they are non zero,
> returning an error if not
>
> Fixes: c1a731c71359 ("ASoC: SOF: compress: Add support for computing timestamps")
> Signed-off-by: Mark Brown <broonie@xxxxxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx
> ---
> sound/soc/sof/compress.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/sound/soc/sof/compress.c b/sound/soc/sof/compress.c
> index 96570121aae0..90f056eae1c3 100644
> --- a/sound/soc/sof/compress.c
> +++ b/sound/soc/sof/compress.c
> @@ -379,6 +379,9 @@ static int sof_compr_pointer(struct snd_soc_component *component,
> if (!spcm)
> return -EINVAL;
>
> + if (!sstream->channels || !sstream->sample_container_bytes)
> + return -EBUSY;
> +

Is this a theoretical fix?
I don't think this can happen in real world as set_params would need to
fail and if that failed then applications would not ask for a pointer as
the compress stream cannot be even started.

> tstamp->sampling_rate = sstream->sampling_rate;
> tstamp->copied_total = sstream->copied_total;
> tstamp->pcm_io_frames = div_u64(spcm->stream[cstream->direction].posn.dai_posn,
>
> ---
> base-commit: c369299895a591d96745d6492d4888259b004a9e
> change-id: 20260326-asoc-compress-tstamp-params-296f38f15217
>
> Best regards,
> --
> Mark Brown <broonie@xxxxxxxxxx>
>
>

--
Péter