pinctrl: sh-pfc: Make legacy function GPIO handling less fragile
authorGeert Uytterhoeven <geert+renesas@glider.be>
Wed, 13 Nov 2019 10:18:09 +0000 (11:18 +0100)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Mon, 9 Dec 2019 08:43:02 +0000 (09:43 +0100)
If there are no function GPIOs, sh_pfc_register_gpiochip() returns early
with a success indicator.  This is fragile, as new code may be added
after the #ifdef block, which won't be executed in case of early return.

Invert the logic, so the code always continues until the end of the
function on success.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Link: https://lore.kernel.org/r/20191113101809.28600-1-geert+renesas@glider.be
drivers/pinctrl/sh-pfc/gpio.c

index 5a55b8d..8213e11 100644 (file)
@@ -386,12 +386,11 @@ int sh_pfc_register_gpiochip(struct sh_pfc *pfc)
        }
 
        /* Register the function GPIOs chip. */
-       if (pfc->info->nr_func_gpios == 0)
-               return 0;
-
-       chip = sh_pfc_add_gpiochip(pfc, gpio_function_setup, NULL);
-       if (IS_ERR(chip))
-               return PTR_ERR(chip);
+       if (pfc->info->nr_func_gpios) {
+               chip = sh_pfc_add_gpiochip(pfc, gpio_function_setup, NULL);
+               if (IS_ERR(chip))
+                       return PTR_ERR(chip);
+       }
 #endif /* CONFIG_PINCTRL_SH_FUNC_GPIO */
 
        return 0;