Patch "ALSA: usb-audio: Make sure to stop endpoints before closing EPs" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ALSA: usb-audio: Make sure to stop endpoints before closing EPs

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     alsa-usb-audio-make-sure-to-stop-endpoints-before-cl.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit a1161e9bdc869b9208ba58751197d757ab3b1e39
Author: Takashi Iwai <tiwai@xxxxxxx>
Date:   Mon Jan 2 18:07:57 2023 +0100

    ALSA: usb-audio: Make sure to stop endpoints before closing EPs
    
    [ Upstream commit 0599313e26666e79f6e7fe1450588431b8cb25d5 ]
    
    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@xxxxxxxxxxxxxx
    Link: https://lore.kernel.org/r/20230102170759.29610-2-tiwai@xxxxxxx
    Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
index b6cd43c5ea3e..ef0c1baaefde 100644
--- a/sound/usb/pcm.c
+++ b/sound/usb/pcm.c
@@ -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);
 	}
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux