aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKirill Marinushkin <k.marinushkin@gmail.com>2018-03-19 07:11:08 +0100
committerBen Hutchings <ben@decadent.org.uk>2018-06-01 00:30:23 +0100
commit25272b0d0d1e37d75b7481951c6a28c8c4d515c7 (patch)
tree390fb6cb2644e38b054e460e1b3ab8383dc21613
parentlibata: Make Crucial BX100 500GB LPM quirk apply to all firmware versions (diff)
downloadlinux-stable-25272b0d0d1e37d75b7481951c6a28c8c4d515c7.tar.xz
linux-stable-25272b0d0d1e37d75b7481951c6a28c8c4d515c7.zip
ALSA: usb-audio: Fix parsing descriptor of UAC2 processing unit
commit a6618f4aedb2b60932d766bd82ae7ce866e842aa upstream. Currently, the offsets in the UAC2 processing unit descriptor are calculated incorrectly. It causes an issue when connecting the device which provides such a feature: ~~~~ [84126.724420] usb 1-1.3.1: invalid Processing Unit descriptor (id 18) ~~~~ After this patch is applied, the UAC2 processing unit inits w/o this error. Fixes: 23caaf19b11e ("ALSA: usb-mixer: Add support for Audio Class v2.0") Signed-off-by: Kirill Marinushkin <k.marinushkin@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> [bwh: Backported to 3.2: adjust filename] Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-rw-r--r--include/linux/usb/audio.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/linux/usb/audio.h b/include/linux/usb/audio.h
index 6f8b026b3396..4ca049ba0fe7 100644
--- a/include/linux/usb/audio.h
+++ b/include/linux/usb/audio.h
@@ -369,7 +369,7 @@ static inline __u8 uac_processing_unit_bControlSize(struct uac_processing_unit_d
{
return (protocol == UAC_VERSION_1) ?
desc->baSourceID[desc->bNrInPins + 4] :
- desc->baSourceID[desc->bNrInPins + 6];
+ 2; /* in UAC2, this value is constant */
}
static inline __u8 *uac_processing_unit_bmControls(struct uac_processing_unit_descriptor *desc,
@@ -377,7 +377,7 @@ static inline __u8 *uac_processing_unit_bmControls(struct uac_processing_unit_de
{
return (protocol == UAC_VERSION_1) ?
&desc->baSourceID[desc->bNrInPins + 5] :
- &desc->baSourceID[desc->bNrInPins + 7];
+ &desc->baSourceID[desc->bNrInPins + 6];
}
static inline __u8 uac_processing_unit_iProcessing(struct uac_processing_unit_descriptor *desc,