]> git.ipfire.org Git - thirdparty/kernel/stable.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>
Fri, 17 Jan 2025 12:34:45 +0000 (13:34 +0100)
commit 057bd54dfcf68b1f67e6dfc32a47a72e12198495 upstream.

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 b3dc5f5164f42cd20f8f478957abc9d7879bd7aa..eabd10817e1e7b8b4a2509944ba211fb8a051820 100644 (file)
@@ -1176,6 +1176,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) {