Move the vendor ID check to the outside and also propogate the error code.
Signed-off-by: Eldad Zack eldad@fogrefinery.com --- sound/usb/pcm.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-)
diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c index 9f9639d..0704823 100644 --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c @@ -363,15 +363,20 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs, alts = &iface->altsetting[1]; goto add_sync_ep; } - if (attr == USB_ENDPOINT_SYNC_ASYNC && - altsd->bInterfaceClass == USB_CLASS_VENDOR_SPEC && - altsd->bInterfaceProtocol == 2 && - altsd->bNumEndpoints == 1 && - USB_ID_VENDOR(subs->stream->chip->usb_id) == 0x0582 /* Roland */ && - search_roland_implicit_fb(subs->dev, altsd->bInterfaceNumber + 1, - altsd->bAlternateSetting, - &alts, &ep) >= 0) { - goto add_sync_ep; + + if (USB_ID_VENDOR(subs->stream->chip->usb_id) == 0x0582) { /* Roland */ + if (attr == USB_ENDPOINT_SYNC_ASYNC && + altsd->bInterfaceClass == USB_CLASS_VENDOR_SPEC && + altsd->bInterfaceProtocol == 2 && + altsd->bNumEndpoints == 1) { + int err = search_roland_implicit_fb(subs->dev, altsd->bInterfaceNumber + 1, + altsd->bAlternateSetting, + &alts, &ep); + if (err < 0) + return err; + + goto add_sync_ep; + } }
/* No quirk */