sound/isa/es18xx.c | 4 ++++ 1 file changed, 4 insertions(+)
snd_es18xx_mixer() creates controls with snd_ctl_new1() and then stores
bookkeeping pointers or sets private_free before calling snd_ctl_add().
snd_ctl_new1() can return NULL on allocation failure, so those writes
can dereference a NULL control pointer.
Check the returned control pointers before using them and return -ENOMEM
on allocation failure.
Signed-off-by: Ruoyu Wang <ruoyuw560@gmail.com>
---
v2:
- Rebase on sound.git for-next.
- Resend only es18xx; the other v1 patches are already in for-next.
sound/isa/es18xx.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/sound/isa/es18xx.c b/sound/isa/es18xx.c
index df88d91e0fb..1a02da1679d 100644
--- a/sound/isa/es18xx.c
+++ b/sound/isa/es18xx.c
@@ -1762,6 +1762,8 @@ static int snd_es18xx_mixer(struct snd_card *card)
for (idx = 0; idx < ARRAY_SIZE(snd_es18xx_base_controls); idx++) {
struct snd_kcontrol *kctl;
kctl = snd_ctl_new1(&snd_es18xx_base_controls[idx], chip);
+ if (!kctl)
+ return -ENOMEM;
if (chip->caps & ES18XX_HWV) {
switch (idx) {
case 0:
@@ -1823,6 +1825,8 @@ static int snd_es18xx_mixer(struct snd_card *card)
for (idx = 0; idx < ARRAY_SIZE(snd_es18xx_hw_volume_controls); idx++) {
struct snd_kcontrol *kctl;
kctl = snd_ctl_new1(&snd_es18xx_hw_volume_controls[idx], chip);
+ if (!kctl)
+ return -ENOMEM;
if (idx == 0)
chip->hw_volume = kctl;
else
--
2.51.0
On Sun, 07 Jun 2026 09:42:19 +0200, Ruoyu Wang wrote: > > snd_es18xx_mixer() creates controls with snd_ctl_new1() and then stores > bookkeeping pointers or sets private_free before calling snd_ctl_add(). > snd_ctl_new1() can return NULL on allocation failure, so those writes > can dereference a NULL control pointer. > > Check the returned control pointers before using them and return -ENOMEM > on allocation failure. > > Signed-off-by: Ruoyu Wang <ruoyuw560@gmail.com> > --- > v2: > - Rebase on sound.git for-next. > - Resend only es18xx; the other v1 patches are already in for-next. Applied to for-next branch now. Thanks. Takashi
© 2016 - 2026 Red Hat, Inc.