Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ALSA: usb-audio: fix broken logic in snd_audigy2nx_led_update()

When the support for the Sound Blaster X-Fi Surround 5.1 Pro was added,
the existing logic for the X-Fi Surround 5.1 in snd_audigy2nx_led_put()
was broken due to missing *else* before the added *if*: snd_usb_ctl_msg()
became incorrectly called twice and an error from first snd_usb_ctl_msg()
call ignored. As the added snd_usb_ctl_msg() call was totally identical
to the existing one for the "plain" X-Fi Surround 5.1, just merge those
two *if* statements while fixing the broken logic...

Found by Linux Verification Center (linuxtesting.org) with the Svace static
analysis tool.

Fixes: 7cdd8d73139e ("ALSA: usb-audio - Add support for USB X-Fi S51 Pro")
Signed-off-by: Sergey Shtylyov <s.shtylyov@auroraos.dev>
Link: https://patch.msgid.link/20260203161558.18680-1-s.shtylyov@auroraos.dev
Signed-off-by: Takashi Iwai <tiwai@suse.de>

authored by

Sergey Shtylyov and committed by
Takashi Iwai
124bdc6e 826af7fa

+2 -7
+2 -7
sound/usb/mixer_quirks.c
··· 311 311 if (pm.err < 0) 312 312 return pm.err; 313 313 314 - if (chip->usb_id == USB_ID(0x041e, 0x3042)) 315 - err = snd_usb_ctl_msg(chip->dev, 316 - usb_sndctrlpipe(chip->dev, 0), 0x24, 317 - USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, 318 - !value, 0, NULL, 0); 319 - /* USB X-Fi S51 Pro */ 320 - if (chip->usb_id == USB_ID(0x041e, 0x30df)) 314 + if (chip->usb_id == USB_ID(0x041e, 0x3042) || /* USB X-Fi S51 */ 315 + chip->usb_id == USB_ID(0x041e, 0x30df)) /* USB X-Fi S51 Pro */ 321 316 err = snd_usb_ctl_msg(chip->dev, 322 317 usb_sndctrlpipe(chip->dev, 0), 0x24, 323 318 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER,