[alsa-devel] [PATCH v2 00/10] ALSA: usb-audio: fix playback/capture concurrent usage

Eldad Zack eldad at fogrefinery.com
Thu Aug 22 21:44:26 CEST 2013




On Thu, 22 Aug 2013, Daniel Mack wrote:

> On 22.08.2013 19:43, Eldad Zack wrote:
> > On Thu, 22 Aug 2013, Daniel Mack wrote:
> >> On 21.08.2013 23:37, Eldad Zack wrote:
> >>> Hi,
> >>>
> >>> This patch series attempts to fix a long starting problem with the concurrent
> >>> usage of playback and capture on implicit feedback devices.
> >>>
> >>> Applies against current for-next (HEAD b43dd416be21bc8ad60984e13def032f01aaaa18 ).
> >>
> >> Thanks a lot for working on this! I'll give that series a test run tonight.
> > 
> > That's great, thanks!
> 
> So, with your patches applied, I'm getting the NULL pointer Oops below
> just by plugging in a UAC2 sound card.
> 
> Note that on this system, pulseaudio is running and grabs the new card
> immediately, then closes it again. That might be different on your machine.
> 
> Do you want me to dig deeper or do you have an idea already?

Oh, I think that data_endpoint just doesn't get initialized yet, 
because it opens and closes immediately.

Does this fix it?

Cheers,
Eldad

diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
index 02fb1ea..283e6c0 100644
--- a/sound/usb/pcm.c
+++ b/sound/usb/pcm.c
@@ -1290,8 +1290,11 @@ static int snd_usb_pcm_close(struct snd_pcm_substream *substream, int direction)
 		subs->interface = -1;
 	}
 
-	subs->data_endpoint->prepare_data_urb = NULL;
-	subs->data_endpoint->retire_data_urb = NULL;
+	if (subs->data_endpoint) {
+		subs->data_endpoint->prepare_data_urb = NULL;
+		subs->data_endpoint->retire_data_urb = NULL;
+	}
+
 	subs->pcm_substream = NULL;
 	snd_usb_autosuspend(subs->stream->chip);
 


More information about the Alsa-devel mailing list