]> exis.tech > repos - linux.git/commitdiff
ALSA: usb-audio: Fix imbalance per-channel volume of sticky mixers
authorRong Zhang <i@rong.moe>
Sun, 5 Jul 2026 18:19:31 +0000 (02:19 +0800)
committerTakashi Iwai <tiwai@suse.de>
Mon, 6 Jul 2026 08:22:43 +0000 (10:22 +0200)
I accidentally made an off-by-a-line mistake when mimicking other code
paths that set all channels. The mistake breaks sticky mixers with
multiple channels.

I didn't realize this mistake at that time, as my device's mixer is
single-channel.

Fix it, so that per-channel volume of sticky mixers is balanced.

Fixes: aa2f4addab44 ("ALSA: usb-audio: Set the value of potential sticky mixers to maximum")
Signed-off-by: Rong Zhang <i@rong.moe>
Link: https://patch.msgid.link/20260706-uac-sticky-channels-fix-v1-1-92741c538283@rong.moe
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/mixer.c

index b4c855c25eef41e07f7d7e55d25fd0051e510839..703c118f9d4eda964bf817593c6e2543ad199c75 100644 (file)
@@ -1473,8 +1473,8 @@ sticky:
        if (!cval->cmask) {
                snd_usb_set_cur_mix_value(cval, 0, 0, cval->max);
        } else {
+               idx = 0;
                for (i = 0; i < MAX_CHANNELS; i++) {
-                       idx = 0;
                        if (cval->cmask & BIT(i)) {
                                snd_usb_set_cur_mix_value(cval, i + 1, idx, cval->max);
                                idx++;