Skip to content

Commit 9109547

Browse files
Zhao Dongdonggregkh
authored andcommitted
ALSA: ymfpci: check snd_ctl_new1() return value
commit e64d170 upstream. snd_ctl_new1() can return NULL when memory allocation fails. snd_ymfpci_create_spdif_controls() does not check the return value before dereferencing kctl->id.device, which can lead to a NULL pointer dereference. Add NULL checks after snd_ctl_new1() calls and return -ENOMEM if any fails. Assisted-by: Opencode:DeepSeek-V4-Flash Cc: stable@vger.kernel.org Fixes: c9b83ae ("ALSA: ymfpci: Fix kctl->id initialization") Signed-off-by: Zhao Dongdong <zhaodongdong@kylinos.cn> Link: https://patch.msgid.link/tencent_4745C5DC2333325C0EDAB1EFC88A136E6809@qq.com Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent c31679f commit 9109547

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

sound/pci/ymfpci/ymfpci_main.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1822,16 +1822,22 @@ int snd_ymfpci_mixer(struct snd_ymfpci *chip, int rear_switch)
18221822
if (snd_BUG_ON(!chip->pcm_spdif))
18231823
return -ENXIO;
18241824
kctl = snd_ctl_new1(&snd_ymfpci_spdif_default, chip);
1825+
if (!kctl)
1826+
return -ENOMEM;
18251827
kctl->id.device = chip->pcm_spdif->device;
18261828
err = snd_ctl_add(chip->card, kctl);
18271829
if (err < 0)
18281830
return err;
18291831
kctl = snd_ctl_new1(&snd_ymfpci_spdif_mask, chip);
1832+
if (!kctl)
1833+
return -ENOMEM;
18301834
kctl->id.device = chip->pcm_spdif->device;
18311835
err = snd_ctl_add(chip->card, kctl);
18321836
if (err < 0)
18331837
return err;
18341838
kctl = snd_ctl_new1(&snd_ymfpci_spdif_stream, chip);
1839+
if (!kctl)
1840+
return -ENOMEM;
18351841
kctl->id.device = chip->pcm_spdif->device;
18361842
err = snd_ctl_add(chip->card, kctl);
18371843
if (err < 0)

0 commit comments

Comments
 (0)