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

Lee Jones <[email protected]> Thu, 23 Jul 2026 12:35:32 +0100
Newsgroups org.kernel.vger.linux-leds,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
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 <[email protected]>
> ---
>  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