mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 13:53:33 +00:00
ALSA: usb-audio: Make sure to stop endpoints before closing EPs
[ Upstream commit0599313e26
] 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:bf6313a0ff
("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> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
83e758105b
commit
c9557906bd
1 changed files with 2 additions and 0 deletions
|
@ -525,6 +525,8 @@ static int snd_usb_hw_params(struct snd_pcm_substream *substream,
|
|||
if (snd_usb_endpoint_compatible(chip, subs->data_endpoint,
|
||||
fmt, hw_params))
|
||||
goto unlock;
|
||||
if (stop_endpoints(subs, false))
|
||||
sync_pending_stops(subs);
|
||||
close_endpoints(chip, subs);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue