lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <87wmklddtr.wl-tiwai@suse.de>
Date: Mon, 12 Aug 2024 16:18:40 +0200
From: Takashi Iwai <tiwai@...e.de>
To: Karol Kosik <k.kosik@...look.com>
Cc: Jaroslav Kysela <perex@...ex.cz>,
	Takashi Iwai <tiwai@...e.com>,
	"Steven 'Steve' Kendall" <skend@...omium.org>,
	Alexander Tsoy <alexander@...y.me>,
	wangdicheng <wangdicheng@...inos.cn>,
	Kenny Levinsen <kl@...wtf>,
	Peter Ujfalusi <peter.ujfalusi@...ux.intel.com>,
	Christos Skevis <xristos.thes@...il.com>,
	"Geoffrey D. Bennett" <g@...vu>,
	Sarah Grant <s@....tw>,
	Stefan Stistrup <sstistrup@...il.com>,
	Johan Carlsson <johan.carlsson@...nage.engineering>,
	linux-sound@...r.kernel.org,
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] ALSA: usb-audio: Support multiple control interfaces

On Mon, 12 Aug 2024 02:29:56 +0200,
Karol Kosik wrote:
> 
> Registering Numark Party Mix II fails with error 'bogus bTerminalLink 1'.
> The problem stems from the driver not being able to find input/output
> terminals required to configure audio streaming. The information about
> those terminals is stored in AudioControl Interface. Numark device
> contains 2 AudioControl Interfaces and the driver checks only one of them.
> 
> According to the USB standard, a device can have multiple audio functions,
> each represented by Audio Interface Collection. Every audio function is
> considered to be closed box and will contain unique AudioControl Interface
> and zero or more AudioStreaming and MIDIStreaming Interfaces.
> 
> The Numark device adheres to the standard and defines two audio functions:
> - MIDIStreaming function
> - AudioStreaming function
> It starts with MIDI function, followed by the audio function. The driver
> saves the first AudioControl Interface in `snd_usb_audio` structure
> associated with the entire device. It then attempts to use this interface
> to query for terminals and clocks. However, this fails because the correct
> information is stored in the second AudioControl Interface, defined in the
> second Audio Interface Collection.
> 
> This patch introduces a structure holding association between each
> MIDI/Audio Interface and its corresponding AudioControl Interface,
> instead of relying on AudioControl Interface defined for the entire
> device. This structure is populated during usb probing phase and leveraged
> later when querying for terminals and when sending USB requests.
> 
> Alternative solutions considered include:
> - defining a quirk for Numark where the order of interface is manually
> changed, or terminals are hardcoded in the driver. This solution would
> have fixed only this model, though it seems that device is USB compliant,
> and it also seems that other devices from this company may be affected.
> What's more, it looks like products from other manufacturers have similar
> problems, i.e. Rane One DJ console
> - keeping a list of all AudioControl Interfaces and querying all of them
> to find required information. That would have solved my problem and have
> low probability of breaking other devices, as we would always start with
> the same logic of querying first AudioControl Interface. This solution
> would not have followed the standard though.
> 
> This patch preserves the `snd_usb_audio.ctrl_intf` variable, which holds
> the first AudioControl Interface, and uses it as a fallback when some
> interfaces are not parsed correctly and lack an associated AudioControl
> Interface, i.e., when configured via quirks.
> 
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=217865
> 
> Signed-off-by: Karol Kosik <k.kosik@...look.com>

Applied now to for-next branch.  Thanks!


Takashi

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ