[alsa-devel] [PATCH] ALSA: usb-audio: Fix parsing descriptor of UAC2 processing unit
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: 5e1ddb481776 ("UAPI: (Scripted) Disintegrate include/linux/usb") Signed-off-by: Kirill Marinushkin k.marinushkin@gmail.com Cc: Mark Brown broonie@kernel.org Cc: Jaroslav Kysela perex@perex.cz Cc: Takashi Iwai tiwai@suse.com Cc: Thomas Gleixner tglx@linutronix.de Cc: Felipe Balbi felipe.balbi@linux.intel.com Cc: Philippe Ombredanne pombredanne@nexb.com Cc: Greg Kroah-Hartman gregkh@linuxfoundation.org Cc: Ruslan Bilovol ruslan.bilovol@gmail.com Cc: linux-kernel@vger.kernel.org Cc: alsa-devel@alsa-project.org --- include/uapi/linux/usb/audio.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/uapi/linux/usb/audio.h b/include/uapi/linux/usb/audio.h index 17a022c5b414..da3315ed1bcd 100644 --- a/include/uapi/linux/usb/audio.h +++ b/include/uapi/linux/usb/audio.h @@ -370,7 +370,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, @@ -378,7 +378,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,
On Mon, Mar 19, 2018 at 07:11:08AM +0100, Kirill Marinushkin wrote:
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: 5e1ddb481776 ("UAPI: (Scripted) Disintegrate include/linux/usb") Signed-off-by: Kirill Marinushkin k.marinushkin@gmail.com Cc: Mark Brown broonie@kernel.org Cc: Jaroslav Kysela perex@perex.cz Cc: Takashi Iwai tiwai@suse.com Cc: Thomas Gleixner tglx@linutronix.de Cc: Felipe Balbi felipe.balbi@linux.intel.com Cc: Philippe Ombredanne pombredanne@nexb.com Cc: Greg Kroah-Hartman gregkh@linuxfoundation.org Cc: Ruslan Bilovol ruslan.bilovol@gmail.com Cc: linux-kernel@vger.kernel.org Cc: alsa-devel@alsa-project.org
include/uapi/linux/usb/audio.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
Cc: stable stable@vger.kernel.org perhaps?
On Mon, 19 Mar 2018 08:40:19 +0100, Greg Kroah-Hartman wrote:
On Mon, Mar 19, 2018 at 07:11:08AM +0100, Kirill Marinushkin wrote:
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: 5e1ddb481776 ("UAPI: (Scripted) Disintegrate include/linux/usb") Signed-off-by: Kirill Marinushkin k.marinushkin@gmail.com Cc: Mark Brown broonie@kernel.org Cc: Jaroslav Kysela perex@perex.cz Cc: Takashi Iwai tiwai@suse.com Cc: Thomas Gleixner tglx@linutronix.de Cc: Felipe Balbi felipe.balbi@linux.intel.com Cc: Philippe Ombredanne pombredanne@nexb.com Cc: Greg Kroah-Hartman gregkh@linuxfoundation.org Cc: Ruslan Bilovol ruslan.bilovol@gmail.com Cc: linux-kernel@vger.kernel.org Cc: alsa-devel@alsa-project.org
include/uapi/linux/usb/audio.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
Cc: stable stable@vger.kernel.org perhaps?
Yes, it deserves. But I'd need to double-check the UAC2 specification. It's interesting that such a basic thing hasn't hit until now. Maybe just because it's a fairly minor feature.
thanks,
Takashi
On Mon, 19 Mar 2018 08:47:49 +0100, Takashi Iwai wrote:
On Mon, 19 Mar 2018 08:40:19 +0100, Greg Kroah-Hartman wrote:
On Mon, Mar 19, 2018 at 07:11:08AM +0100, Kirill Marinushkin wrote:
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: 5e1ddb481776 ("UAPI: (Scripted) Disintegrate include/linux/usb") Signed-off-by: Kirill Marinushkin k.marinushkin@gmail.com Cc: Mark Brown broonie@kernel.org Cc: Jaroslav Kysela perex@perex.cz Cc: Takashi Iwai tiwai@suse.com Cc: Thomas Gleixner tglx@linutronix.de Cc: Felipe Balbi felipe.balbi@linux.intel.com Cc: Philippe Ombredanne pombredanne@nexb.com Cc: Greg Kroah-Hartman gregkh@linuxfoundation.org Cc: Ruslan Bilovol ruslan.bilovol@gmail.com Cc: linux-kernel@vger.kernel.org Cc: alsa-devel@alsa-project.org
include/uapi/linux/usb/audio.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
Cc: stable stable@vger.kernel.org perhaps?
Yes, it deserves. But I'd need to double-check the UAC2 specification. It's interesting that such a basic thing hasn't hit until now. Maybe just because it's a fairly minor feature.
... and the patch looks correct, after confirming the UAC2 spec. Now I applied it, with a minor correction of Fixes tag, which actually was introduced by 23caaf19b11e ("ALSA: usb-mixer: Add support for Audio Class v2.0"), and adding Cc to stable.
Thanks!
Takashi
On Mon, Mar 19, 2018 at 5:45 PM, Takashi Iwai tiwai@suse.de wrote:
On Mon, 19 Mar 2018 08:47:49 +0100, Takashi Iwai wrote:
On Mon, 19 Mar 2018 08:40:19 +0100, Greg Kroah-Hartman wrote:
On Mon, Mar 19, 2018 at 07:11:08AM +0100, Kirill Marinushkin wrote:
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: 5e1ddb481776 ("UAPI: (Scripted) Disintegrate include/linux/usb") Signed-off-by: Kirill Marinushkin k.marinushkin@gmail.com Cc: Mark Brown broonie@kernel.org Cc: Jaroslav Kysela perex@perex.cz Cc: Takashi Iwai tiwai@suse.com Cc: Thomas Gleixner tglx@linutronix.de Cc: Felipe Balbi felipe.balbi@linux.intel.com Cc: Philippe Ombredanne pombredanne@nexb.com Cc: Greg Kroah-Hartman gregkh@linuxfoundation.org Cc: Ruslan Bilovol ruslan.bilovol@gmail.com Cc: linux-kernel@vger.kernel.org Cc: alsa-devel@alsa-project.org
include/uapi/linux/usb/audio.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
Cc: stable <stable@vger.kernel.org>
perhaps?
Yes, it deserves. But I'd need to double-check the UAC2 specification. It's interesting that such a basic thing hasn't hit until now. Maybe just because it's a fairly minor feature.
... and the patch looks correct, after confirming the UAC2 spec. Now I applied it, with a minor correction of Fixes tag, which actually was introduced by 23caaf19b11e ("ALSA: usb-mixer: Add support for Audio Class v2.0"), and adding Cc to stable.
I also checked UAC1/UAC2 spec and the patch looks good. What's interesting it seems nobody faced this issue (after searching ower Internet can't find any mention) which was present from the beginning of UAC2 driver implementation.
Thanks, Ruslan
participants (4)
-
Greg Kroah-Hartman
-
Kirill Marinushkin
-
Ruslan Bilovol
-
Takashi Iwai