snd_usb_add_endpoint assumes alts is not NULL. Before passing alts, check if it is the case (for future-proofing). Since it is also an indication that a quirk is needed, remove the redundant goto statements.
Signed-off-by: Eldad Zack eldad@fogrefinery.com --- sound/usb/pcm.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c index 0704823..e70f70b 100644 --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c @@ -332,7 +332,7 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs, struct usb_interface_descriptor *altsd, unsigned int attr) { - struct usb_host_interface *alts; + struct usb_host_interface *alts = NULL; struct usb_interface *iface; unsigned int ep;
@@ -350,7 +350,6 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs, return -EINVAL;
alts = &iface->altsetting[1]; - goto add_sync_ep; break; case USB_ID(0x0763, 0x2080): /* M-Audio FastTrack Ultra */ case USB_ID(0x0763, 0x2081): @@ -361,7 +360,6 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs, return -EINVAL;
alts = &iface->altsetting[1]; - goto add_sync_ep; }
if (USB_ID_VENDOR(subs->stream->chip->usb_id) == 0x0582) { /* Roland */ @@ -374,15 +372,13 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs, &alts, &ep); if (err < 0) return err; - - goto add_sync_ep; } }
/* No quirk */ - return 0; + if (alts == NULL) + return 0;
-add_sync_ep: subs->sync_endpoint = snd_usb_add_endpoint(subs->stream->chip, alts, ep, !subs->direction, SND_USB_ENDPOINT_TYPE_DATA);