[PATCH] gpio: lpc32xx: check devm_gpiochip_add_data() return value
Bartosz Golaszewski
brgl at kernel.org
Thu Oct 15 03:10:20 PDT 2026
On Wed, 14 Oct 2026 22:43:31 +0200, Jayaraj Devaraj
<jayarajdmit at gmail.com> said:
> lpc32xx_gpio_probe() registers each gpio chip with
> devm_gpiochip_add_data() but ignores the return value. If registering
> a chip fails, probe still returns 0, so the driver binds with a chip
> missing and no error is reported.
>
> Check the return value, print an error naming the failing chip and
> return the error code. Chips registered earlier in the loop are devm
> managed and are removed automatically on failure.
>
> Signed-off-by: Jayaraj Devaraj <jayarajdmit at gmail.com>
> ---
> drivers/gpio/gpio-lpc32xx.c | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpio/gpio-lpc32xx.c b/drivers/gpio/gpio-lpc32xx.c
> index 37fc54fc7385..014eb8bc70da 100644
> --- a/drivers/gpio/gpio-lpc32xx.c
> +++ b/drivers/gpio/gpio-lpc32xx.c
> @@ -510,7 +510,7 @@ static int lpc32xx_of_xlate(struct gpio_chip *gc,
>
> static int lpc32xx_gpio_probe(struct platform_device *pdev)
> {
> - int i;
> + int i, ret;
> void __iomem *reg_base;
>
> reg_base = devm_platform_ioremap_resource(pdev, 0);
> @@ -524,8 +524,12 @@ static int lpc32xx_gpio_probe(struct platform_device *pdev)
> lpc32xx_gpiochip[i].chip.of_gpio_n_cells = 3;
> lpc32xx_gpiochip[i].reg_base = reg_base;
> }
> - devm_gpiochip_add_data(&pdev->dev, &lpc32xx_gpiochip[i].chip,
> - &lpc32xx_gpiochip[i]);
> + ret = devm_gpiochip_add_data(&pdev->dev, &lpc32xx_gpiochip[i].chip,
> + &lpc32xx_gpiochip[i]);
> + if (ret) {
> + dev_err(&pdev->dev, "failed to register gpio chip %d: %d\n", i, ret);
> + return ret;
Please use return dev_err_probe().
Bart
> + }
> }
>
> return 0;
> --
> 2.34.1
>
>
More information about the linux-arm-kernel
mailing list