ALSA: usb-audio: Make sure to stop endpoints before closing EPs
authorTakashi Iwai <tiwai@suse.de>
Mon, 2 Jan 2023 17:07:57 +0000 (18:07 +0100)
committerTakashi Iwai <tiwai@suse.de>
Wed, 4 Jan 2023 08:53:21 +0000 (09:53 +0100)
commit0599313e26666e79f6e7fe1450588431b8cb25d5
tree43a3230d0e0082c1c441cb4ba00cccb477636c7d
parenta5751933a7f6abbdad90d98f25a25bb4b133a9e6
ALSA: usb-audio: Make sure to stop endpoints before closing EPs

At the PCM hw params, we may re-configure the endpoints and it's done
by a temporary EP close followed by re-open.  A potential problem
there is that the EP might be already running internally at the PCM
prepare stage; it's seen typically in the playback stream with the
implicit feedback sync.  As this stream start isn't tracked by the
core PCM layer, we'd need to stop it explicitly, and that's the
missing piece.

This patch adds the stop_endpoints() call at snd_usb_hw_params() to
assure the stream stop before closing the EPs.

Fixes: bf6313a0ff76 ("ALSA: usb-audio: Refactor endpoint management")
Link: https://lore.kernel.org/r/4e509aea-e563-e592-e652-ba44af6733fe@veniogames.com
Link: https://lore.kernel.org/r/20230102170759.29610-2-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/pcm.c