mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
ALSA: ymfpci: check snd_ctl_new1() return value
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: c9b83ae4a1 ("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>
This commit is contained in:
parent
2b929b91b0
commit
e64d170346
|
|
@ -1781,16 +1781,22 @@ int snd_ymfpci_mixer(struct snd_ymfpci *chip, int rear_switch)
|
|||
if (snd_BUG_ON(!chip->pcm_spdif))
|
||||
return -ENXIO;
|
||||
kctl = snd_ctl_new1(&snd_ymfpci_spdif_default, chip);
|
||||
if (!kctl)
|
||||
return -ENOMEM;
|
||||
kctl->id.device = chip->pcm_spdif->device;
|
||||
err = snd_ctl_add(chip->card, kctl);
|
||||
if (err < 0)
|
||||
return err;
|
||||
kctl = snd_ctl_new1(&snd_ymfpci_spdif_mask, chip);
|
||||
if (!kctl)
|
||||
return -ENOMEM;
|
||||
kctl->id.device = chip->pcm_spdif->device;
|
||||
err = snd_ctl_add(chip->card, kctl);
|
||||
if (err < 0)
|
||||
return err;
|
||||
kctl = snd_ctl_new1(&snd_ymfpci_spdif_stream, chip);
|
||||
if (!kctl)
|
||||
return -ENOMEM;
|
||||
kctl->id.device = chip->pcm_spdif->device;
|
||||
err = snd_ctl_add(chip->card, kctl);
|
||||
if (err < 0)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user