]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
usb: gadget: f_uac2: Fix incorrect setting of bNumEndpoints
authorPrashanth K <quic_prashk@quicinc.com>
Wed, 11 Dec 2024 11:59:15 +0000 (17:29 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 23 Dec 2024 17:50:28 +0000 (18:50 +0100)
Currently afunc_bind sets std_ac_if_desc.bNumEndpoints to 1 if
controls (mute/volume) are enabled. During next afunc_bind call,
bNumEndpoints would be unchanged and incorrectly set to 1 even
if the controls aren't enabled.

Fix this by resetting the value of bNumEndpoints to 0 on every
afunc_bind call.

Fixes: eaf6cbe09920 ("usb: gadget: f_uac2: add volume and mute support")
Cc: stable <stable@kernel.org>
Signed-off-by: Prashanth K <quic_prashk@quicinc.com>
Link: https://lore.kernel.org/r/20241211115915.159864-1-quic_prashk@quicinc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/function/f_uac2.c

index ce5b77f8919026054e104b6b1511f8b08a292597..9b324821c93bd084430ce779ed481102a038068b 100644 (file)
@@ -1185,6 +1185,7 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn)
                uac2->as_in_alt = 0;
        }
 
+       std_ac_if_desc.bNumEndpoints = 0;
        if (FUOUT_EN(uac2_opts) || FUIN_EN(uac2_opts)) {
                uac2->int_ep = usb_ep_autoconfig(gadget, &fs_ep_int_desc);
                if (!uac2->int_ep) {