[ALSA patch] [PATCH] ALSA: usb-audio: ignore broken processing/extension unit

Takashi Iwai tiwai at suse.de
Mon Aug 17 08:32:32 CEST 2020


On Sun, 16 Aug 2020 23:28:11 +0200,
tom.ty89 at gmail.com wrote:
> 
> From: Tom Yan <tom.ty89 at gmail.com>
> 
> Some devices have broken extension unit where getting current value doesn't work. Attempt that once when creating mixer control for it. If it fails, just ignore it, so that it won't cripple the device entirely (and/or make the error floods).

Could you give your Signed-off-by line?  It's mandatory for merging to
the upstream.


thanks,

Takashi


> ---
>  sound/usb/mixer.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
> index eab0fd4fd7c3..e0b7174c1043 100644
> --- a/sound/usb/mixer.c
> +++ b/sound/usb/mixer.c
> @@ -2367,7 +2367,7 @@ static int build_audio_procunit(struct mixer_build *state, int unitid,
>  	int num_ins;
>  	struct usb_mixer_elem_info *cval;
>  	struct snd_kcontrol *kctl;
> -	int i, err, nameid, type, len;
> +	int i, err, nameid, type, len, val;
>  	const struct procunit_info *info;
>  	const struct procunit_value_info *valinfo;
>  	const struct usbmix_name_map *map;
> @@ -2470,6 +2470,12 @@ static int build_audio_procunit(struct mixer_build *state, int unitid,
>  			break;
>  		}
>  
> +		err = get_cur_ctl_value(cval, cval->control << 8, &val);
> +		if (err < 0) {
> +			usb_mixer_elem_info_free(cval);
> +			return -EINVAL;
> +		}
> +
>  		kctl = snd_ctl_new1(&mixer_procunit_ctl, cval);
>  		if (!kctl) {
>  			usb_mixer_elem_info_free(cval);
> -- 
> 2.28.0
> 
> _______________________________________________
> Patch mailing list
> Patch at alsa-project.org
> https://mailman.alsa-project.org/mailman/listinfo/patch
> 


More information about the Alsa-devel mailing list