pinctrl: pistachio: Correct the fwnode_irq_get() return value check
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Thu, 8 Sep 2022 09:43:23 +0000 (12:43 +0300)
committerLinus Walleij <linus.walleij@linaro.org>
Thu, 8 Sep 2022 13:18:58 +0000 (15:18 +0200)
fwnode_irq_get() may return all possible signed values, such as Linux
error code or 0. Fix the code to handle this properly.

Fixes: 1074e1d23a5c ("pinctrl: pistachio: Switch to use fwnode instead of")
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20220908094323.31965-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-pistachio.c

index 940ed3f..7ca4ecb 100644 (file)
@@ -1375,7 +1375,13 @@ static int pistachio_gpio_register(struct pistachio_pinctrl *pctl)
                ret = fwnode_irq_get(child, 0);
                if (ret < 0) {
                        fwnode_handle_put(child);
+                       dev_err(pctl->dev, "Failed to retrieve IRQ for bank %u\n", i);
+                       goto err;
+               }
+               if (!ret) {
+                       fwnode_handle_put(child);
                        dev_err(pctl->dev, "No IRQ for bank %u\n", i);
+                       ret = -EINVAL;
                        goto err;
                }
                irq = ret;