[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: Clemens Ladisch <clemens@ladisch.de>
This commit is contained in:
parent
9624ea812c
commit
daa150ef7d
1 changed files with 8 additions and 2 deletions
|
@ -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)
|
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;
|
snd_usb_substream_t *subs;
|
||||||
return subs->hwptr_done;
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue