[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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue