Messages in this thread | | | Subject | Re: [PATCH] usb: gadget: fsl: Fix a wrong judgment in fsl_udc_probe() | From | Sergei Shtylyov <> | Date | Fri, 10 Apr 2020 12:36:48 +0300 |
| |
Hello!
On 10.04.2020 4:58, Tang Bin wrote:
> If the function "platform_get_irq()" failed, the negative value > returned will not be detected here, including "-EPROBE_DEFER", which > causes the application to fail to get the correct error message. > Thus it must be fixed. > > Signed-off-by: Tang Bin <tangbin@cmss.chinamobile.com> > Signed-off-by: Shengju Zhang <zhangshengju@cmss.chinamobile.com> > --- > drivers/usb/gadget/udc/fsl_udc_core.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/usb/gadget/udc/fsl_udc_core.c b/drivers/usb/gadget/udc/fsl_udc_core.c > index ec6eda426..60853ad10 100644 > --- a/drivers/usb/gadget/udc/fsl_udc_core.c > +++ b/drivers/usb/gadget/udc/fsl_udc_core.c > @@ -2441,8 +2441,8 @@ static int fsl_udc_probe(struct platform_device *pdev) > udc_controller->max_ep = (dccparams & DCCPARAMS_DEN_MASK) * 2; > > udc_controller->irq = platform_get_irq(pdev, 0); > - if (!udc_controller->irq) {
This check has always been wrong, doesn't account for real errors and probe deferral...
> - ret = -ENODEV; > + if (udc_controller->irq <= 0) {
Note that platfrom_get_irq() no longer returns 0 on error.
> + ret = udc_controller->irq ? : -ENODEV; > goto err_iounmap; > }
MBR, Sergei
| |