linux/sound
Takashi Iwai 5f5e6a3e8b ALSA: usb-audio: Allow modifying parameters with succeeding hw_params calls
The recent fix for the hw constraints for implicit feedback streams
via commit e4ea77f8e5 ("ALSA: usb-audio: Always apply the hw
constraints for implicit fb sync") added the check of the matching
endpoints and whether those EPs are already opened.  This is needed
and correct, per se, even for the normal streams without the implicit
feedback, as the endpoint setup is exclusive.

However, it's reported that there seem applications that behave in
unexpected ways to update the hw_params without clearing the previous
setup via hw_free, and those hit a problem now: then hw_params is
called with still the previous EP setup kept, hence it's restricted
with the previous own setup.  Although the obvious fix is to call
snd_pcm_hw_free() API in the application side, it's a kind of
unwelcome change.

This patch tries to ease the situation: in the endpoint check, we add
a couple of more conditions and now skip the endpoint that is being
used only by the stream in question itself.  That is, in addition to
the presence check of ep (ep->cur_audiofmt is non-NULL), when the
following conditions are met, we skip such an ep:
- ep->opened == 1, and
- ep->cur_audiofmt == subs->cur_audiofmt.

subs->cur_audiofmt is non-NULL only if it's a re-setup of hw_params,
and ep->cur_audiofmt points to the currently set up parameters.  So if
those match, it must be this stream itself.

Fixes: e4ea77f8e5 ("ALSA: usb-audio: Always apply the hw constraints for implicit fb sync")
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=211941
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20210228080138.9936-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-02-28 09:02:08 +01:00
..
ac97 ALSA: ac97: Constify static struct attribute_group 2021-01-31 09:49:58 +01:00
aoa ALSA: Convert strlcpy to strscpy when return value is unused 2021-01-08 09:30:05 +01:00
arm ALSA: Convert strlcpy to strscpy when return value is unused 2021-01-08 09:30:05 +01:00
atmel
core ASoC: Updates for v5.12 2021-02-17 21:16:27 +01:00
drivers ALSA: Convert strlcpy to strscpy when return value is unused 2021-01-08 09:30:05 +01:00
firewire ALSA: fireface: fix to parse sync status register of latter protocol 2021-02-08 15:58:36 +01:00
hda ALSA: hda: intel-dsp-config: add Alder Lake support 2021-02-17 21:17:09 +01:00
i2c ALSA: Convert strlcpy to strscpy when return value is unused 2021-01-08 09:30:05 +01:00
isa isa: Make the remove callback for isa drivers return void 2021-01-26 07:51:48 +01:00
mips ALSA: n64: Fix return value check in n64audio_probe() 2021-02-25 10:29:13 +01:00
oss ALSA: Convert strlcpy to strscpy when return value is unused 2021-01-08 09:30:05 +01:00
parisc
pci sound updates for 5.12 2021-02-21 14:21:35 -08:00
pcmcia
ppc ALSA: Convert strlcpy to strscpy when return value is unused 2021-01-08 09:30:05 +01:00
sh
soc ASoC: Updates for v5.12 2021-02-17 21:16:27 +01:00
sparc
spi
synth
usb ALSA: usb-audio: Allow modifying parameters with succeeding hw_params calls 2021-02-28 09:02:08 +01:00
x86 ALSA: x86: Simplify with dma_set_mask_and_coherent() 2021-01-15 11:17:19 +01:00
xen ALSA: Convert strlcpy to strscpy when return value is unused 2021-01-08 09:30:05 +01:00
ac97_bus.c
Kconfig
last.c
Makefile
sound_core.c