ALSA: usb-audio: Don't override ignore_ctl_error value from the map
authorTakashi Iwai <tiwai@suse.de>
Sun, 12 Apr 2020 08:13:29 +0000 (10:13 +0200)
committerTakashi Iwai <tiwai@suse.de>
Sun, 12 Apr 2020 08:14:44 +0000 (10:14 +0200)
The mapping table may contain also ignore_ctl_error flag for devices
that are known to behave wild.  Since this flag always writes the
card's own ignore_ctl_error flag, it overrides the value already set
by the module option, so it doesn't follow user's expectation.
Let's fix the code not to clear the flag that has been set by user.

BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206873
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20200412081331.4742-3-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/mixer.c

index d27e390dcd3292f3e7c29d8e28182cca85bd9d1d..83926b1be53b9caae78e683c6bdd9fd2a7ef0c85 100644 (file)
@@ -3106,7 +3106,7 @@ static int snd_usb_mixer_controls(struct usb_mixer_interface *mixer)
                if (map->id == state.chip->usb_id) {
                        state.map = map->map;
                        state.selector_map = map->selector_map;
-                       mixer->ignore_ctl_error = map->ignore_ctl_error;
+                       mixer->ignore_ctl_error |= map->ignore_ctl_error;
                        break;
                }
        }