Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit daa150ef authored by Clemens Ladisch's avatar Clemens Ladisch Committed by Jaroslav Kysela
Browse files

[ALSA] usb-audio: properly lock hwptr_done accesses



USB generic driver
Take the substream lock when reading hwptr_done to avoid a race
condition with the updates in the URB callbacks.

Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
parent 9624ea81
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -815,8 +815,14 @@ static int wait_clear_urbs(snd_usb_substream_t *subs)
 */
static snd_pcm_uframes_t snd_usb_pcm_pointer(snd_pcm_substream_t *substream)
{
	snd_usb_substream_t *subs = (snd_usb_substream_t *)substream->runtime->private_data;
	return subs->hwptr_done;
	snd_usb_substream_t *subs;
	snd_pcm_uframes_t hwptr_done;
	
	subs = (snd_usb_substream_t *)substream->runtime->private_data;
	spin_lock(&subs->lock);
	hwptr_done = subs->hwptr_done;
	spin_unlock(&subs->lock);
	return hwptr_done;
}