[alsa-devel] [PATCH v2 1/2] ALSA: usb-audio: Fix irq/process data synchronization

Takashi Iwai tiwai at suse.de
Wed Jan 4 07:28:28 CET 2017


On Mon, 02 Jan 2017 16:50:30 +0100,
Ioan-Adrian Ratiu wrote:
> 
> --- a/sound/usb/pcm.c
> +++ b/sound/usb/pcm.c
(snip)
> @@ -850,7 +850,7 @@ static int snd_usb_pcm_prepare(struct snd_pcm_substream *substream)
>  	/* for playback, submit the URBs now; otherwise, the first hwptr_done
>  	 * updates for all URBs would happen at the same time when starting */
>  	if (subs->direction == SNDRV_PCM_STREAM_PLAYBACK)
> -		ret = start_endpoints(subs, true);
> +		return start_endpoints(subs);

Here you miss the unlock below.

>  
>   unlock:
>  	snd_usb_unlock_shutdown(subs->stream->chip);

... and this must be the reason of the hang up at disconnection, where
the driver ways forever at wait_event() in usb_audio_disconnect().

Could you fix this and resubmit v3?  Other than that, it looks OK.


thanks,

Takashi


More information about the Alsa-devel mailing list