The irq_of_parse_and_map() function returns negative error codes but "udc->irq" is an unsigned int so the error handling doesn't work. Fixes: 1b9f35adb0ff ("usb: gadget: udc: Add Synopsys UDC Platform driver") Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> --- drivers/usb/gadget/udc/snps_udc_plat.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/usb/gadget/udc/snps_udc_plat.c b/drivers/usb/gadget/udc/snps_udc_plat.c index 0ed685db149d..37edd6c35077 100644 --- a/drivers/usb/gadget/udc/snps_udc_plat.c +++ b/drivers/usb/gadget/udc/snps_udc_plat.c @@ -103,7 +103,7 @@ static int udc_plat_probe(struct platform_device *pdev) struct device *dev = &pdev->dev; struct resource *res; struct udc *udc; - int ret; + int irq, ret; udc = devm_kzalloc(dev, sizeof(*udc), GFP_KERNEL); if (!udc) @@ -132,11 +132,12 @@ static int udc_plat_probe(struct platform_device *pdev) udc->phys_addr = (unsigned long)res->start; - udc->irq = irq_of_parse_and_map(dev->of_node, 0); - if (udc->irq <= 0) { + irq = irq_of_parse_and_map(dev->of_node, 0); + if (irq <= 0) { dev_err(dev, "Can't parse and map interrupt\n"); return -EINVAL; } + udc->irq = irq; udc->udc_phy = devm_of_phy_get_by_index(dev, dev->of_node, 0); if (IS_ERR(udc->udc_phy)) { -- 2.30.2