Re: [PATCH 1/1] usb: gadget: f_uac2: fix error handling at afunc_bind
On Thu, Nov 03, 2016 at 10:50:23AM +0200, Felipe Balbi wrote: > > Hi, > > Peter Chenwrites: > > The current error handling flow uses incorrect goto label, fix it > > > > Cc: > > Fixes: d12a8727171c ("usb: gadget: function: Remove > > redundant usb_free_all_descriptors") > > Signed-off-by: Peter Chen > > seems like there's more than one fix here. > > > --- > > drivers/usb/gadget/function/f_uac2.c | 20 +++- > > 1 file changed, 11 insertions(+), 9 deletions(-) > > > > diff --git a/drivers/usb/gadget/function/f_uac2.c > > b/drivers/usb/gadget/function/f_uac2.c > > index cd214ec8..3f4e478 100644 > > --- a/drivers/usb/gadget/function/f_uac2.c > > +++ b/drivers/usb/gadget/function/f_uac2.c > > @@ -1067,13 +1067,13 @@ afunc_bind(struct usb_configuration *cfg, struct > > usb_function *fn) > > agdev->out_ep = usb_ep_autoconfig(gadget, _epout_desc); > > if (!agdev->out_ep) { > > dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); > > - goto err; > > + return ret; > > } > > > > agdev->in_ep = usb_ep_autoconfig(gadget, _epin_desc); > > if (!agdev->in_ep) { > > dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); > > - goto err; > > + return ret; > > } > > > > uac2->p_prm.uac2 = uac2; > > @@ -1091,13 +1091,14 @@ afunc_bind(struct usb_configuration *cfg, struct > > usb_function *fn) > > ret = usb_assign_descriptors(fn, fs_audio_desc, hs_audio_desc, NULL, > > NULL); > > if (ret) > > - goto err; > > + return ret; > > this is one fix > > > > > prm = >uac2.c_prm; > > prm->max_psize = hs_epout_desc.wMaxPacketSize; > > prm->rbuf = kzalloc(prm->max_psize * USB_XFERS, GFP_KERNEL); > > if (!prm->rbuf) { > > prm->max_psize = 0; > > + ret = -ENOMEM; > > but initializing ret to -ENOMEM is a separate fix altogether. > Ok, I will have a bug-fix just fixing incorrect label, and have another patch to change return value for -next. -- Best Regards, Peter Chen -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/1] usb: gadget: f_uac2: fix error handling at afunc_bind
Hi, Peter Chenwrites: > The current error handling flow uses incorrect goto label, fix it > > Cc: > Fixes: d12a8727171c ("usb: gadget: function: Remove > redundant usb_free_all_descriptors") > Signed-off-by: Peter Chen seems like there's more than one fix here. > --- > drivers/usb/gadget/function/f_uac2.c | 20 +++- > 1 file changed, 11 insertions(+), 9 deletions(-) > > diff --git a/drivers/usb/gadget/function/f_uac2.c > b/drivers/usb/gadget/function/f_uac2.c > index cd214ec8..3f4e478 100644 > --- a/drivers/usb/gadget/function/f_uac2.c > +++ b/drivers/usb/gadget/function/f_uac2.c > @@ -1067,13 +1067,13 @@ afunc_bind(struct usb_configuration *cfg, struct > usb_function *fn) > agdev->out_ep = usb_ep_autoconfig(gadget, _epout_desc); > if (!agdev->out_ep) { > dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); > - goto err; > + return ret; > } > > agdev->in_ep = usb_ep_autoconfig(gadget, _epin_desc); > if (!agdev->in_ep) { > dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); > - goto err; > + return ret; > } > > uac2->p_prm.uac2 = uac2; > @@ -1091,13 +1091,14 @@ afunc_bind(struct usb_configuration *cfg, struct > usb_function *fn) > ret = usb_assign_descriptors(fn, fs_audio_desc, hs_audio_desc, NULL, >NULL); > if (ret) > - goto err; > + return ret; this is one fix > > prm = >uac2.c_prm; > prm->max_psize = hs_epout_desc.wMaxPacketSize; > prm->rbuf = kzalloc(prm->max_psize * USB_XFERS, GFP_KERNEL); > if (!prm->rbuf) { > prm->max_psize = 0; > + ret = -ENOMEM; but initializing ret to -ENOMEM is a separate fix altogether. -- balbi signature.asc Description: PGP signature
[PATCH 1/1] usb: gadget: f_uac2: fix error handling at afunc_bind
The current error handling flow uses incorrect goto label, fix it Cc:Fixes: d12a8727171c ("usb: gadget: function: Remove redundant usb_free_all_descriptors") Signed-off-by: Peter Chen --- drivers/usb/gadget/function/f_uac2.c | 20 +++- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/drivers/usb/gadget/function/f_uac2.c b/drivers/usb/gadget/function/f_uac2.c index cd214ec8..3f4e478 100644 --- a/drivers/usb/gadget/function/f_uac2.c +++ b/drivers/usb/gadget/function/f_uac2.c @@ -1067,13 +1067,13 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn) agdev->out_ep = usb_ep_autoconfig(gadget, _epout_desc); if (!agdev->out_ep) { dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); - goto err; + return ret; } agdev->in_ep = usb_ep_autoconfig(gadget, _epin_desc); if (!agdev->in_ep) { dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); - goto err; + return ret; } uac2->p_prm.uac2 = uac2; @@ -1091,13 +1091,14 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn) ret = usb_assign_descriptors(fn, fs_audio_desc, hs_audio_desc, NULL, NULL); if (ret) - goto err; + return ret; prm = >uac2.c_prm; prm->max_psize = hs_epout_desc.wMaxPacketSize; prm->rbuf = kzalloc(prm->max_psize * USB_XFERS, GFP_KERNEL); if (!prm->rbuf) { prm->max_psize = 0; + ret = -ENOMEM; goto err_free_descs; } @@ -1106,20 +1107,21 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn) prm->rbuf = kzalloc(prm->max_psize * USB_XFERS, GFP_KERNEL); if (!prm->rbuf) { prm->max_psize = 0; - goto err_free_descs; + ret = -ENOMEM; + goto err_no_memory; } ret = alsa_uac2_init(agdev); if (ret) - goto err_free_descs; + goto err_no_memory; return 0; -err_free_descs: - usb_free_all_descriptors(fn); -err: +err_no_memory: kfree(agdev->uac2.p_prm.rbuf); kfree(agdev->uac2.c_prm.rbuf); - return -EINVAL; +err_free_descs: + usb_free_all_descriptors(fn); + return ret; } static int -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html