[PATCH] ALSA: es1938: check control allocation before private data setup

Ruoyu Wang <[email protected]> Sun, 7 Jun 2026 10:56:09 +0800
Newsgroups org.alsa-project.alsa-devel,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
snd_es1938_mixer() creates mixer controls with snd_ctl_new1() and then
stores hardware-volume pointers and private_free hooks in the returned
controls before calling snd_ctl_add(). snd_ctl_new1() can return NULL on
allocation failure, so these setup writes can dereference NULL.

Check the allocation result before using the control pointer.

Signed-off-by: Ruoyu Wang <[email protected]>
---
 sound/pci/es1938.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sound/pci/es1938.c b/sound/pci/es1938.c
index 280125eff3624..b6dcb721fffce 100644
--- a/sound/pci/es1938.c
+++ b/sound/pci/es1938.c
@@ -1655,6 +1655,8 @@ static int snd_es1938_mixer(struct es1938 *chip)
 	for (idx = 0; idx < ARRAY_SIZE(snd_es1938_controls); idx++) {
 		struct snd_kcontrol *kctl;
 		kctl = snd_ctl_new1(&snd_es1938_controls[idx], chip);
+		if (!kctl)
+			return -ENOMEM;
 		switch (idx) {
 			case 0:
 				chip->master_volume = kctl;
-- 
2.34.1