]> git.itanic.dy.fi Git - linux-stable/commitdiff
ASoC: mediatek: mt8192: Check existence of dai_name before dereferencing
authorNícolas F. R. A. Prado <nfraprado@collabora.com>
Mon, 8 Jan 2024 20:44:58 +0000 (17:44 -0300)
committerMark Brown <broonie@kernel.org>
Mon, 8 Jan 2024 20:58:28 +0000 (20:58 +0000)
Following commit 13f58267cda3 ("ASoC: soc.h: don't create dummy
Component via COMP_DUMMY()"), the dai_name field is only populated for
dummy components after the card is registered. This causes a null
pointer dereference in the mt8192-mt6359 sound card driver's probe
function when searching for a dai_name among all the card's dai links.

Verify that the dai_name is non-null before passing it to strcmp. While
at it, also check that there's at least one codec.

Reported-by: kernelci.org bot <bot@kernelci.org>
Closes: https://linux.kernelci.org/test/case/id/6582cd6d992645c680e13478/
Fixes: 13f58267cda3 ("ASoC: soc.h: don't create dummy Component via COMP_DUMMY()")
Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
Link: https://msgid.link/r/20240108204508.691739-1-nfraprado@collabora.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c

index 5bd6addd145051bbdc4f71583a3fa64e4581838d..bfcb2c486c39df1de6d095a4fbcca7087ed851e3 100644 (file)
@@ -1208,7 +1208,8 @@ static int mt8192_mt6359_dev_probe(struct platform_device *pdev)
                        dai_link->ignore = 0;
                }
 
-               if (strcmp(dai_link->codecs[0].dai_name, RT1015_CODEC_DAI) == 0)
+               if (dai_link->num_codecs && dai_link->codecs[0].dai_name &&
+                   strcmp(dai_link->codecs[0].dai_name, RT1015_CODEC_DAI) == 0)
                        dai_link->ops = &mt8192_rt1015_i2s_ops;
 
                if (!dai_link->platforms->name)