Re: [PATCH] leds: gpio: Skip unavailable LEDs during shutdown

From: Lee Jones

Date: Thu Jul 23 2026 - 07:46:47 EST


On Fri, 10 Jul 2026, Steve Dunnagan wrote:

> gpio_led_probe() leaves an error-valued GPIO descriptor in the LED
> data when an unavailable platform-data LED is skipped.

So why not nip that in the bud and fix that instead?

> The entry remains included in priv->num_leds, so gpio_led_shutdown()
> later passes the error pointer to gpio_led_set(), producing:
>
> gpiod_set_value: invalid GPIO (errorpointer: -ENOENT)
>
> Skip entries with error-valued GPIO descriptors during shutdown.
>
> Fixes: 45d4c6de4e49 ("leds: gpio: Try to lookup gpiod from device")
> Assisted-by: ChatGPT:GPT-5.5-Thinking
> Signed-off-by: Steve Dunnagan <sdunnaga@xxxxxxxxxx>
> ---
> drivers/leds/leds-gpio.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c
> index 8ae71c2e91e0..63cb517ef385 100644
> --- a/drivers/leds/leds-gpio.c
> +++ b/drivers/leds/leds-gpio.c
> @@ -304,6 +304,9 @@ static void gpio_led_shutdown(struct platform_device *pdev)
> for (i = 0; i < priv->num_leds; i++) {
> struct gpio_led_data *led = &priv->leds[i];
>
> + if (IS_ERR(led->gpiod))
> + continue;
> +
> if (!(led->cdev.flags & LED_RETAIN_AT_SHUTDOWN))
> gpio_led_set(&led->cdev, LED_OFF);
> }
> --
> 2.49.0
>

--
Lee Jones