mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-09-22 09:34:56 +02:00
ALSA: aoa: check snd_ctl_new1() return value
[ Upstream commit8df560fefe] snd_ctl_new1() can return NULL when memory allocation fails. In layout.c, the function does not check the return value before dereferencing ctl->id.name or passing to aoa_snd_ctl_add(), which can lead to a NULL pointer dereference. Add NULL checks after snd_ctl_new1() calls and return early if any fails. Assisted-by: Opencode:DeepSeek-V4-Flash Cc: stable@vger.kernel.org Fixes:f3d9478b2c("[ALSA] snd-aoa: add snd-aoa") Signed-off-by: Zhao Dongdong <zhaodongdong@kylinos.cn> Link: https://patch.msgid.link/tencent_35F3A25FEEBF190A2E15ED787754C57E3708@qq.com Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Sasha Levin <sashal@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
f2315b1675
commit
2ee9c46fd2
@@ -947,6 +947,8 @@ static void layout_attached_codec(struct aoa_codec *codec)
|
||||
if (lineout == 1)
|
||||
ldev->gpio.methods->set_lineout(codec->gpio, 1);
|
||||
ctl = snd_ctl_new1(&lineout_ctl, codec->gpio);
|
||||
if (!ctl)
|
||||
return;
|
||||
if (cc->connected & CC_LINEOUT_LABELLED_HEADPHONE)
|
||||
strscpy(ctl->id.name,
|
||||
"Headphone Switch", sizeof(ctl->id.name));
|
||||
@@ -961,6 +963,8 @@ static void layout_attached_codec(struct aoa_codec *codec)
|
||||
if (ldev->have_lineout_detect) {
|
||||
ctl = snd_ctl_new1(&lineout_detect_choice,
|
||||
ldev);
|
||||
if (!ctl)
|
||||
return;
|
||||
if (cc->connected & CC_LINEOUT_LABELLED_HEADPHONE)
|
||||
strscpy(ctl->id.name,
|
||||
"Headphone Detect Autoswitch",
|
||||
@@ -968,6 +972,8 @@ static void layout_attached_codec(struct aoa_codec *codec)
|
||||
aoa_snd_ctl_add(ctl);
|
||||
ctl = snd_ctl_new1(&lineout_detected,
|
||||
ldev);
|
||||
if (!ctl)
|
||||
return;
|
||||
if (cc->connected & CC_LINEOUT_LABELLED_HEADPHONE)
|
||||
strscpy(ctl->id.name,
|
||||
"Headphone Detected",
|
||||
|
||||
Reference in New Issue
Block a user