mirror of
https://github.com/torvalds/linux.git
synced 2024-11-01 13:03:25 +01:00
ASoC: intel: sof_sdw: Add check devm_kasprintf() returned value
devm_kasprintf() can return a NULL pointer on failure but this
returned value is not checked.
Fixes: b359760d95
("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>
This commit is contained in:
parent
47d7d3fd72
commit
2c0b2b484b
1 changed files with 12 additions and 0 deletions
|
@ -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 *cpu_dai_name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d Pin", i);
|
||||||
char *codec_name = devm_kasprintf(dev, GFP_KERNEL, "i2c-%s:0%d",
|
char *codec_name = devm_kasprintf(dev, GFP_KERNEL, "i2c-%s:0%d",
|
||||||
ssp_info->acpi_id, j++);
|
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 playback = ssp_info->dais[0].direction[SNDRV_PCM_STREAM_PLAYBACK];
|
||||||
int capture = ssp_info->dais[0].direction[SNDRV_PCM_STREAM_CAPTURE];
|
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++) {
|
for (i = 0; i < hdmi_num; i++) {
|
||||||
char *name = devm_kasprintf(dev, GFP_KERNEL, "iDisp%d", i + 1);
|
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);
|
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;
|
char *codec_name, *codec_dai_name;
|
||||||
|
|
||||||
if (intel_ctx->hdmi.idisp_codec) {
|
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";
|
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,
|
ret = asoc_sdw_init_simple_dai_link(dev, *dai_links, be_id, name,
|
||||||
1, 0, // HDMI only supports playback
|
1, 0, // HDMI only supports playback
|
||||||
cpu_dai_name, platform_component->name,
|
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;
|
SOF_BT_OFFLOAD_SSP_SHIFT;
|
||||||
char *name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d-BT", port);
|
char *name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d-BT", port);
|
||||||
char *cpu_dai_name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d Pin", port);
|
char *cpu_dai_name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d Pin", port);
|
||||||
|
if (!name || !cpu_dai_name)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = asoc_sdw_init_simple_dai_link(dev, *dai_links, be_id, name,
|
ret = asoc_sdw_init_simple_dai_link(dev, *dai_links, be_id, name,
|
||||||
|
|
Loading…
Reference in a new issue