Skip to content

Commit d7c71df

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 5b31fe7 commit d7c71df

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
@@ -1827,16 +1827,22 @@ int snd_ymfpci_mixer(struct snd_ymfpci *chip, int rear_switch)
18271827
if (snd_BUG_ON(!chip->pcm_spdif))
18281828
return -ENXIO;
18291829
kctl = snd_ctl_new1(&snd_ymfpci_spdif_default, chip);
1830+
if (!kctl)
1831+
return -ENOMEM;
18301832
kctl->id.device = chip->pcm_spdif->device;
18311833
err = snd_ctl_add(chip->card, kctl);
18321834
if (err < 0)
18331835
return err;
18341836
kctl = snd_ctl_new1(&snd_ymfpci_spdif_mask, chip);
1837+
if (!kctl)
1838+
return -ENOMEM;
18351839
kctl->id.device = chip->pcm_spdif->device;
18361840
err = snd_ctl_add(chip->card, kctl);
18371841
if (err < 0)
18381842
return err;
18391843
kctl = snd_ctl_new1(&snd_ymfpci_spdif_stream, chip);
1844+
if (!kctl)
1845+
return -ENOMEM;
18401846
kctl->id.device = chip->pcm_spdif->device;
18411847
err = snd_ctl_add(chip->card, kctl);
18421848
if (err < 0)

0 commit comments

Comments
 (0)