ASoC: intel: sof_sdw: Add check devm_kasprintf() returned value
authorCharles Han <hanchunchao@inspur.com>
Wed, 25 Sep 2024 08:00:30 +0000 (16:00 +0800)
committerMark Brown <broonie@kernel.org>
Wed, 2 Oct 2024 13:02:19 +0000 (14:02 +0100)
devm_kasprintf() can return a NULL pointer on failure but this
returned value is not checked.

Fixes: b359760d95ee ("ASoC: intel: sof_sdw: Add simple DAI link creation helper")
Signed-off-by: Charles Han <hanchunchao@inspur.com>
Link: https://patch.msgid.link/20240925080030.11262-1-hanchunchao@inspur.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/boards/sof_sdw.c

index 5196d96f5c0e86e0cf9a6ffd4668def886ab1b47..35d707d3ae9c7112e2d4bdb67d6310d1196636ee 100644 (file)
@@ -800,6 +800,9 @@ static int create_ssp_dailinks(struct snd_soc_card *card,
                char *cpu_dai_name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d Pin", i);
                char *codec_name = devm_kasprintf(dev, GFP_KERNEL, "i2c-%s:0%d",
                                                  ssp_info->acpi_id, j++);
+               if (!name || !cpu_dai_name || !codec_name)
+                       return -ENOMEM;
+
                int playback = ssp_info->dais[0].direction[SNDRV_PCM_STREAM_PLAYBACK];
                int capture = ssp_info->dais[0].direction[SNDRV_PCM_STREAM_CAPTURE];
 
@@ -866,6 +869,9 @@ static int create_hdmi_dailinks(struct snd_soc_card *card,
        for (i = 0; i < hdmi_num; i++) {
                char *name = devm_kasprintf(dev, GFP_KERNEL, "iDisp%d", i + 1);
                char *cpu_dai_name = devm_kasprintf(dev, GFP_KERNEL, "iDisp%d Pin", i + 1);
+               if (!name || !cpu_dai_name)
+                       return -ENOMEM;
+
                char *codec_name, *codec_dai_name;
 
                if (intel_ctx->hdmi.idisp_codec) {
@@ -877,6 +883,9 @@ static int create_hdmi_dailinks(struct snd_soc_card *card,
                        codec_dai_name = "snd-soc-dummy-dai";
                }
 
+               if (!codec_dai_name)
+                       return -ENOMEM;
+
                ret = asoc_sdw_init_simple_dai_link(dev, *dai_links, be_id, name,
                                                    1, 0, // HDMI only supports playback
                                                    cpu_dai_name, platform_component->name,
@@ -900,6 +909,9 @@ static int create_bt_dailinks(struct snd_soc_card *card,
                        SOF_BT_OFFLOAD_SSP_SHIFT;
        char *name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d-BT", port);
        char *cpu_dai_name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d Pin", port);
+       if (!name || !cpu_dai_name)
+               return -ENOMEM;
+
        int ret;
 
        ret = asoc_sdw_init_simple_dai_link(dev, *dai_links, be_id, name,