diff mbox series

[v2,1/2] ASoC: SOF: stream-ipc: Check for cstream nullity in sof_ipc_msg_data()

Message ID 20241107134308.23844-2-peter.ujfalusi@linux.intel.com (mailing list archive)
State New
Headers show
Series ASoC: SOF: Correct sps->stream and cstream nullity management | expand

Commit Message

Peter Ujfalusi Nov. 7, 2024, 1:43 p.m. UTC
The nullity of sps->cstream should be checked similarly as it is done in
sof_set_stream_data_offset() function.
Assuming that it is not NULL if sps->stream is NULL is incorrect and can
lead to NULL pointer dereference.

Fixes: ef8ba9f79953 ("ASoC: SOF: Add support for compress API for stream data/offset")
Cc: stable@vger.kernel.org
Reported-by: Curtis Malainey <cujomalainey@chromium.org>
Closes: https://github.com/thesofproject/linux/pull/5214
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Curtis Malainey <cujomalainey@chromium.org>
---
 sound/soc/sof/stream-ipc.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Mark Brown Nov. 8, 2024, 1:34 p.m. UTC | #1
On Thu, Nov 07, 2024 at 03:43:07PM +0200, Peter Ujfalusi wrote:
> The nullity of sps->cstream should be checked similarly as it is done in
> sof_set_stream_data_offset() function.
> Assuming that it is not NULL if sps->stream is NULL is incorrect and can
> lead to NULL pointer dereference.
> 
> Fixes: ef8ba9f79953 ("ASoC: SOF: Add support for compress API for stream data/offset")

This commit, also referenced in the second patch, doesn't exist.
diff mbox series

Patch

diff --git a/sound/soc/sof/stream-ipc.c b/sound/soc/sof/stream-ipc.c
index 794c7bbccbaf..8262443ac89a 100644
--- a/sound/soc/sof/stream-ipc.c
+++ b/sound/soc/sof/stream-ipc.c
@@ -43,7 +43,7 @@  int sof_ipc_msg_data(struct snd_sof_dev *sdev,
 				return -ESTRPIPE;
 
 			posn_offset = stream->posn_offset;
-		} else {
+		} else if (sps->cstream) {
 
 			struct sof_compr_stream *sstream = sps->cstream->runtime->private_data;
 
@@ -51,6 +51,10 @@  int sof_ipc_msg_data(struct snd_sof_dev *sdev,
 				return -ESTRPIPE;
 
 			posn_offset = sstream->posn_offset;
+
+		} else {
+			dev_err(sdev->dev, "%s: No stream opened\n", __func__);
+			return -EINVAL;
 		}
 
 		snd_sof_dsp_mailbox_read(sdev, posn_offset, p, sz);