All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] leds: lp5860: reject out-of-range channel IDs
@ 2026-07-20 10:30 kr494167
  2026-07-20 10:41 ` sashiko-bot
  0 siblings, 1 reply; 2+ messages in thread
From: kr494167 @ 2026-07-20 10:30 UTC (permalink / raw)
  To: lee, pavel; +Cc: s.trumtrar, linux-leds, linux-kernel, surendra

From: surendra <kr494167@gmail.com>

lp5860_iterate_subleds() detects a channel ID greater than the
hardware limit, but returns the successful result of
fwnode_property_read_u32(). The caller therefore treats the malformed
sub-LED description as valid and uses the invalid ID for register
addressing.

Return -EINVAL when the channel ID is out of range.

Fixes: f0a66563aa2d ("leds: Add support for TI LP5860 LED driver chip")
Signed-off-by: surendra <kr494167@gmail.com>
---
 drivers/leds/rgb/leds-lp5860-core.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/leds/rgb/leds-lp5860-core.c b/drivers/leds/rgb/leds-lp5860-core.c
index e21d5f2302be..75498311b080 100644
--- a/drivers/leds/rgb/leds-lp5860-core.c
+++ b/drivers/leds/rgb/leds-lp5860-core.c
@@ -114,12 +114,18 @@ static int lp5860_iterate_subleds(struct lp5860_led *led, struct led_init_data *
 		}
 
 		ret = fwnode_property_read_u32(led_node, "reg", &channel);
-		if (ret < 0 || channel > LP5860_MAX_LED) {
+		if (ret < 0) {
 			dev_err_probe(led->chip->dev, ret,
 				      "%pfwP: 'reg' property is missing. Skipping.\n", led_node);
 			fwnode_handle_put(led_node);
 			return ret;
 		}
+		if (channel > LP5860_MAX_LED) {
+			dev_err(led->chip->dev, "%pfwP: 'reg' property is out of range.\n",
+				led_node);
+			fwnode_handle_put(led_node);
+			return -EINVAL;
+		}
 
 		led->mc_cdev.subled_info[subled].color_index = color_index;
 		led->mc_cdev.subled_info[subled].channel = channel;
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] leds: lp5860: reject out-of-range channel IDs
  2026-07-20 10:30 [PATCH] leds: lp5860: reject out-of-range channel IDs kr494167
@ 2026-07-20 10:41 ` sashiko-bot
  0 siblings, 0 replies; 2+ messages in thread
From: sashiko-bot @ 2026-07-20 10:41 UTC (permalink / raw)
  To: kr494167; +Cc: linux-leds, lee

Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [Medium] The commit message incorrectly claims that the malformed sub-LED uses the invalid ID for register addressing.
- [Low] The commit message description is not capitalized, violating the LED subsystem conventions.
- [Low] The patch uses `dev_err()` instead of `dev_err_probe()` to report a configuration failure.
--

--- Patch [1]: [PATCH] leds: lp5860: reject out-of-range channel IDs ---
commit 4536ff26f6ab558401ac176c54f90cdb3be700b7
Author: surendra <kr494167@gmail.com>

leds: lp5860: reject out-of-range channel IDs

This commit fixes an issue where lp5860_iterate_subleds() returns success
when encountering a channel ID that is out of bounds, instead of correctly
returning an error.

> leds: lp5860: reject out-of-range channel IDs

[Severity: Low]
This isn't a bug, but the LED subsystem guidelines require capitalizing the
description after the subsystem prefix. Should this be "Reject out-of-range
channel IDs"?

> The caller therefore treats the malformed
> sub-LED description as valid and uses the invalid ID for register
> addressing.

[Severity: Medium]
Is this description accurate?

Looking at the original code, if channel > LP5860_MAX_LED, it returns `ret`
(which is 0) and aborts the loop before assigning the parsed channel to
led->mc_cdev.subled_info[subled].channel.

Since the subled_info array is zero-filled by allocation, the unassigned
channel would remain 0 rather than containing the invalid out-of-bounds ID.
Could the commit message be updated to better reflect the exact behavior?

> diff --git a/drivers/leds/rgb/leds-lp5860-core.c b/drivers/leds/rgb/leds-lp5860-core.c
> index e21d5f2302be0..75498311b0803 100644
> --- a/drivers/leds/rgb/leds-lp5860-core.c
> +++ b/drivers/leds/rgb/leds-lp5860-core.c
> @@ -114,12 +114,18 @@ static int lp5860_iterate_subleds(struct lp5860_led *led, struct led_init_data *
>  		}
>  
>  		ret = fwnode_property_read_u32(led_node, "reg", &channel);
> -		if (ret < 0 || channel > LP5860_MAX_LED) {
> +		if (ret < 0) {
>  			dev_err_probe(led->chip->dev, ret,
>  				      "%pfwP: 'reg' property is missing. Skipping.\n", led_node);
>  			fwnode_handle_put(led_node);
>  			return ret;
>  		}
> +		if (channel > LP5860_MAX_LED) {
> +			dev_err(led->chip->dev, "%pfwP: 'reg' property is out of range.\n",
> +				led_node);

[Severity: Low]
Should this use dev_err_probe() instead of dev_err() to maintain consistency
with the surrounding error paths and conform to the LED subsystem guidelines
for probe failures?

> +			fwnode_handle_put(led_node);
> +			return -EINVAL;
> +		}
>  
>  		led->mc_cdev.subled_info[subled].color_index = color_index;
>  		led->mc_cdev.subled_info[subled].channel = channel;

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260720103017.88090-1-kr494167@gmail.com?part=1

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-07-20 10:41 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-20 10:30 [PATCH] leds: lp5860: reject out-of-range channel IDs kr494167
2026-07-20 10:41 ` sashiko-bot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.