ALSA: hda/cs8409: Fix possible NULL dereference
authorMurad Masimov <m.masimov@maxima.ru>
Thu, 10 Oct 2024 22:16:45 +0000 (01:16 +0300)
committerTakashi Iwai <tiwai@suse.de>
Fri, 11 Oct 2024 09:14:06 +0000 (11:14 +0200)
If snd_hda_gen_add_kctl fails to allocate memory and returns NULL, then
NULL pointer dereference will occur in the next line.

Since dolphin_fixups function is a hda_fixup function which is not supposed
to return any errors, add simple check before dereference, ignore the fail.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: 20e507724113 ("ALSA: hda/cs8409: Add support for dolphin")
Signed-off-by: Murad Masimov <m.masimov@maxima.ru>
Link: https://patch.msgid.link/20241010221649.1305-1-m.masimov@maxima.ru
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_cs8409.c

index 26f3c31600d7bf1491149d870de10ee0cf3f5434..614327218634c0c8fcd560cb2dee18757fa64367 100644 (file)
@@ -1403,8 +1403,9 @@ void dolphin_fixups(struct hda_codec *codec, const struct hda_fixup *fix, int ac
                kctrl = snd_hda_gen_add_kctl(&spec->gen, "Line Out Playback Volume",
                                             &cs42l42_dac_volume_mixer);
                /* Update Line Out kcontrol template */
-               kctrl->private_value = HDA_COMPOSE_AMP_VAL_OFS(DOLPHIN_HP_PIN_NID, 3, CS8409_CODEC1,
-                                      HDA_OUTPUT, CS42L42_VOL_DAC) | HDA_AMP_VAL_MIN_MUTE;
+               if (kctrl)
+                       kctrl->private_value = HDA_COMPOSE_AMP_VAL_OFS(DOLPHIN_HP_PIN_NID, 3, CS8409_CODEC1,
+                                              HDA_OUTPUT, CS42L42_VOL_DAC) | HDA_AMP_VAL_MIN_MUTE;
                cs8409_enable_ur(codec, 0);
                snd_hda_codec_set_name(codec, "CS8409/CS42L42");
                break;