ASoC: SOF: ipc4: check return value of snd_sof_ipc_msg_data
authorBard Liao <yung-chuan.liao@linux.intel.com>
Wed, 29 Nov 2023 12:20:21 +0000 (14:20 +0200)
committerMark Brown <broonie@kernel.org>
Wed, 29 Nov 2023 13:25:25 +0000 (13:25 +0000)
snd_sof_ipc_msg_data could return error.

Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20231129122021.679-1-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/ipc4.c

index a9d9800d2fcc9876f5b2ffc55c178c49f475522a..145d319e041fa59dc05eef7631d2d3ada7af911f 100644 (file)
@@ -713,7 +713,14 @@ static void sof_ipc4_rx_msg(struct snd_sof_dev *sdev)
                        return;
 
                ipc4_msg->data_size = data_size;
-               snd_sof_ipc_msg_data(sdev, NULL, ipc4_msg->data_ptr, ipc4_msg->data_size);
+               err = snd_sof_ipc_msg_data(sdev, NULL, ipc4_msg->data_ptr, ipc4_msg->data_size);
+               if (err < 0) {
+                       dev_err(sdev->dev, "failed to read IPC notification data: %d\n", err);
+                       kfree(ipc4_msg->data_ptr);
+                       ipc4_msg->data_ptr = NULL;
+                       ipc4_msg->data_size = 0;
+                       return;
+               }
        }
 
        /* Handle notifications with payload */