Message ID | ZH7sIkbSZg1rAJpJ@moroto (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | usb: gadget/snps_udc_plat: Fix a signedness bug in probe | expand |
On Tue, Jun 06, 2023 at 11:19:46AM +0300, Dan Carpenter wrote: > 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@linaro.org> Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Thanks Uwe
On Tue, Jun 06, 2023 at 11:19:46AM +0300, Dan Carpenter wrote: > 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@linaro.org> > --- > 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) { Oops. It turns out that irq_of_parse_and_map() returns zero on error, not negatives so this patch isn't needed and probably the correct thing is to change the error check to if (!irq) { instead. regards, dan carpenter
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)) {
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@linaro.org> --- drivers/usb/gadget/udc/snps_udc_plat.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)