On 03/24/2020 05:50 PM, Sergei Shtylyov wrote: >> --v1------------------------------------ >> In this function, the variable 'rc' is assigned after this place, >> so the definition is invalid. >> >> --v2------------------------------------ >> In this function, the variable 'rc' will be assigned by the function >> 'usb_add_gadget_udc()',so the assignment here is redundant,we should >> remove it. >> >> Signed-off-by: Tang Bin <tangbin@xxxxxxxxxxxxxxxxxxxx> > > NAK. > >> --- >> drivers/usb/gadget/udc/bcm63xx_udc.c | 2 -- >> 1 file changed, 2 deletions(-) >> >> diff --git a/drivers/usb/gadget/udc/bcm63xx_udc.c b/drivers/usb/gadget/udc/bcm63xx_udc.c >> index 54501814d..a7afa8c35 100644 >> --- a/drivers/usb/gadget/udc/bcm63xx_udc.c >> +++ b/drivers/usb/gadget/udc/bcm63xx_udc.c >> @@ -2321,8 +2321,6 @@ static int bcm63xx_udc_probe(struct platform_device *pdev) >> if (rc) >> return rc; >> >> - rc = -ENXIO; >> - >> /* IRQ resource #0: control interrupt (VBUS, speed, etc.) */ >> irq = platform_get_irq(pdev, 0); >> if (irq < 0) > > This *if* branch goes to the 'out_uninit' label which uses 'rc' (and it should > be negative). > In principle, if you change 'rc' to 'irq' below, this patch would be sane. > It's not as is. Still, the other *goto* out_uninit in te loop below shoild be changed as well. Otherwise, if the result is overriden to -ENXIO, e.g. deferred probing is borked. MBR, Sergei