diff options
| author | Mark Brown <broonie@kernel.org> | 2026-03-26 17:52:41 +0300 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-04-10 15:57:09 +0300 |
| commit | c5b6285aae050ff1c3ea824ca3d88ac4be1e69c8 (patch) | |
| tree | 2096079844f7231276f9281036002352376d9f4b | |
| parent | 2603ea46ce5c59568cf968ce35d2bf2854042182 (diff) | |
| download | linux-c5b6285aae050ff1c3ea824ca3d88ac4be1e69c8.tar.xz | |
ASoC: SOF: Don't allow pointer operations on unconfigured streams
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")
Cc: stable@vger.kernel.org
Link: https://patch.msgid.link/20260326-asoc-compress-tstamp-params-v1-1-3dc735b3d599@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
| -rw-r--r-- | sound/soc/sof/compress.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sound/soc/sof/compress.c b/sound/soc/sof/compress.c index f4c3e10e6344..93f2376585db 100644 --- a/sound/soc/sof/compress.c +++ b/sound/soc/sof/compress.c @@ -381,6 +381,9 @@ static int sof_compr_pointer(struct snd_soc_component *component, if (!spcm) return -EINVAL; + if (!sstream->channels || !sstream->sample_container_bytes) + return -EBUSY; + 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, |
