* [PATCH] leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that is always false
@ 2023-08-01 15:16 Marek Behún
2023-08-17 10:26 ` (subset) " Lee Jones
2023-10-06 14:24 ` Mark Rutland
0 siblings, 2 replies; 6+ messages in thread
From: Marek Behún @ 2023-08-01 15:16 UTC (permalink / raw)
To: Pavel Machek, Lee Jones, linux-leds; +Cc: Marek Behún
At the time we call
BUG_ON(props.color == LED_COLOR_ID_MULTI);
the props variable is still initialized to zero.
Call the BUG_ON only after we parse fwnode into props.
Fixes: 77dce3a22e89 ("leds: disallow /sys/class/leds/*:multi:* for now")
Signed-off-by: Marek Behún <kabel@kernel.org>
---
drivers/leds/led-core.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/leds/led-core.c b/drivers/leds/led-core.c
index b9b1295833c9..04f9ea675f2c 100644
--- a/drivers/leds/led-core.c
+++ b/drivers/leds/led-core.c
@@ -474,15 +474,15 @@ int led_compose_name(struct device *dev, struct led_init_data *init_data,
struct fwnode_handle *fwnode = init_data->fwnode;
const char *devicename = init_data->devicename;
- /* We want to label LEDs that can produce full range of colors
- * as RGB, not multicolor */
- BUG_ON(props.color == LED_COLOR_ID_MULTI);
-
if (!led_classdev_name)
return -EINVAL;
led_parse_fwnode_props(dev, fwnode, &props);
+ /* We want to label LEDs that can produce full range of colors
+ * as RGB, not multicolor */
+ BUG_ON(props.color == LED_COLOR_ID_MULTI);
+
if (props.label) {
/*
* If init_data.devicename is NULL, then it indicates that
--
2.41.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: (subset) [PATCH] leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that is always false 2023-08-01 15:16 [PATCH] leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that is always false Marek Behún @ 2023-08-17 10:26 ` Lee Jones 2023-10-06 14:24 ` Mark Rutland 1 sibling, 0 replies; 6+ messages in thread From: Lee Jones @ 2023-08-17 10:26 UTC (permalink / raw) To: Pavel Machek, Lee Jones, linux-leds, Marek Behún On Tue, 01 Aug 2023 17:16:23 +0200, Marek Behún wrote: > At the time we call > BUG_ON(props.color == LED_COLOR_ID_MULTI); > the props variable is still initialized to zero. > > Call the BUG_ON only after we parse fwnode into props. > > > [...] Applied, thanks! [1/1] leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that is always false commit: c3f853184bed04105682383c2971798c572226b5 -- Lee Jones [李琼斯] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that is always false 2023-08-01 15:16 [PATCH] leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that is always false Marek Behún 2023-08-17 10:26 ` (subset) " Lee Jones @ 2023-10-06 14:24 ` Mark Rutland 2023-10-06 14:39 ` Mark Rutland 1 sibling, 1 reply; 6+ messages in thread From: Mark Rutland @ 2023-10-06 14:24 UTC (permalink / raw) To: Marek Beh'un; +Cc: Pavel Machek, Lee Jones, linux-leds, linux-kernel On Tue, Aug 01, 2023 at 05:16:23PM +0200, Marek Beh'un wrote: > At the time we call > BUG_ON(props.color == LED_COLOR_ID_MULTI); > the props variable is still initialized to zero. > > Call the BUG_ON only after we parse fwnode into props. > > Fixes: 77dce3a22e89 ("leds: disallow /sys/class/leds/*:multi:* for now") > Signed-off-by: Marek Beh'un <kabel@kernel.org> I've just discovered this has broken boot on my Libre Computer AML-A311D-CC-V0.2, which was working just fine with Debian 12's stock kernel: mark@stor-flodeboller:~$ uname -a Linux stor-flodeboller 6.1.0-12-arm64 #1 SMP Debian 6.1.52-1 (2023-09-07) aarch64 GNU/Linux When upgrading to v6.6-rc3 for testing, the board dies at boot time due to the BUG_ON() moved by this commit. That BUG_ON() provides no useful context for solving the issue, and it's *distinctly* unhelpful. I decompiled the DTB provided by the firmware, and it has: | leds { | compatible = "gpio-leds"; | | led-yellow-green { | color = <0x08>; | function = "status"; | gpios = <0x16 0x44 0x01>; | linux,default-trigger = "default-on"; | panic-indicator; | }; | | led-blue { | color = <0x03>; | function = "activity"; | gpios = <0x16 0x48 0x01>; | linux,default-trigger = "activity"; | }; | }; ... and IIUC LED_COLOR_ID_MULTI is 8, so the problem is the led-yellow-green subnode. I presume that could use LED_COLOR_ID_RGB. Can we please do something so that this doesn't prevent the board from booting? Is there some reason we don't transparently convert LED_COLOR_ID_MULTI to LED_COLOR_ID_RGB? If that's not viable, could we skip the LED *without* crashing the kernel, so that the board remains usable? Thanks, Mark. > --- > drivers/leds/led-core.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/leds/led-core.c b/drivers/leds/led-core.c > index b9b1295833c9..04f9ea675f2c 100644 > --- a/drivers/leds/led-core.c > +++ b/drivers/leds/led-core.c > @@ -474,15 +474,15 @@ int led_compose_name(struct device *dev, struct led_init_data *init_data, > struct fwnode_handle *fwnode = init_data->fwnode; > const char *devicename = init_data->devicename; > > - /* We want to label LEDs that can produce full range of colors > - * as RGB, not multicolor */ > - BUG_ON(props.color == LED_COLOR_ID_MULTI); > - > if (!led_classdev_name) > return -EINVAL; > > led_parse_fwnode_props(dev, fwnode, &props); > > + /* We want to label LEDs that can produce full range of colors > + * as RGB, not multicolor */ > + BUG_ON(props.color == LED_COLOR_ID_MULTI); > + > if (props.label) { > /* > * If init_data.devicename is NULL, then it indicates that > -- > 2.41.0 > > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that is always false 2023-10-06 14:24 ` Mark Rutland @ 2023-10-06 14:39 ` Mark Rutland 2023-10-06 14:45 ` Lee Jones 0 siblings, 1 reply; 6+ messages in thread From: Mark Rutland @ 2023-10-06 14:39 UTC (permalink / raw) To: Marek Beh'un; +Cc: Pavel Machek, Lee Jones, linux-leds On Fri, Oct 06, 2023 at 03:24:04PM +0100, Mark Rutland wrote: > On Tue, Aug 01, 2023 at 05:16:23PM +0200, Marek Beh'un wrote: > > At the time we call > > BUG_ON(props.color == LED_COLOR_ID_MULTI); > > the props variable is still initialized to zero. > > > > Call the BUG_ON only after we parse fwnode into props. > > > > Fixes: 77dce3a22e89 ("leds: disallow /sys/class/leds/*:multi:* for now") > > Signed-off-by: Marek Beh'un <kabel@kernel.org> > > I've just discovered this has broken boot on my Libre Computer > AML-A311D-CC-V0.2, which was working just fine with Debian 12's stock kernel: Sorry the the noise; I've just spotted this is fixed by: https://lore.kernel.org/linux-leds/20230918140724.18634-1-kabel@kernel.org/ ... and I look forward to that hitting mainline :) Mark. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that is always false 2023-10-06 14:39 ` Mark Rutland @ 2023-10-06 14:45 ` Lee Jones 2023-10-06 15:11 ` Mark Rutland 0 siblings, 1 reply; 6+ messages in thread From: Lee Jones @ 2023-10-06 14:45 UTC (permalink / raw) To: Mark Rutland; +Cc: Marek Beh'un, Pavel Machek, linux-leds On Fri, 06 Oct 2023, Mark Rutland wrote: > On Fri, Oct 06, 2023 at 03:24:04PM +0100, Mark Rutland wrote: > > On Tue, Aug 01, 2023 at 05:16:23PM +0200, Marek Beh'un wrote: > > > At the time we call > > > BUG_ON(props.color == LED_COLOR_ID_MULTI); > > > the props variable is still initialized to zero. > > > > > > Call the BUG_ON only after we parse fwnode into props. > > > > > > Fixes: 77dce3a22e89 ("leds: disallow /sys/class/leds/*:multi:* for now") > > > Signed-off-by: Marek Beh'un <kabel@kernel.org> > > > > I've just discovered this has broken boot on my Libre Computer > > AML-A311D-CC-V0.2, which was working just fine with Debian 12's stock kernel: > > Sorry the the noise; I've just spotted this is fixed by: > > https://lore.kernel.org/linux-leds/20230918140724.18634-1-kabel@kernel.org/ > > ... and I look forward to that hitting mainline :) Your long agonising wait is over: commit 9dc1664fab2246bc2c3e9bf2cf21518a857f9b5b Author: Marek Behún <kabel@kernel.org> Date: Mon Sep 18 16:07:24 2023 +0200 leds: Drop BUG_ON check for LED_COLOR_ID_MULTI Commit c3f853184bed ("leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that is always false") fixed a no-op BUG_ON. This turned out to cause a regression, since some in-tree device-tree files already use LED_COLOR_ID_MULTI. Drop the BUG_ON altogether. Fixes: c3f853184bed ("leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that is always false") Reported-by: Da Xue <da@libre.computer> Closes: https://lore.kernel.org/linux-leds/ZQLelWcNjjp2xndY@duo.ucw.cz/T/ Signed-off-by: Marek Behún <kabel@kernel.org> Link: https://lore.kernel.org/r/20230918140724.18634-1-kabel@kernel.org Signed-off-by: Lee Jones <lee@kernel.org> --- drivers/leds/led-core.c | 4 ---- 1 file changed, 4 deletions(-) -- Lee Jones [李琼斯] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that is always false 2023-10-06 14:45 ` Lee Jones @ 2023-10-06 15:11 ` Mark Rutland 0 siblings, 0 replies; 6+ messages in thread From: Mark Rutland @ 2023-10-06 15:11 UTC (permalink / raw) To: Lee Jones; +Cc: Marek Beh'un, Pavel Machek, linux-leds On Fri, Oct 06, 2023 at 03:45:18PM +0100, Lee Jones wrote: > On Fri, 06 Oct 2023, Mark Rutland wrote: > > On Fri, Oct 06, 2023 at 03:24:04PM +0100, Mark Rutland wrote: > > > On Tue, Aug 01, 2023 at 05:16:23PM +0200, Marek Beh'un wrote: > > > > At the time we call > > > > BUG_ON(props.color == LED_COLOR_ID_MULTI); > > > > the props variable is still initialized to zero. > > > > > > > > Call the BUG_ON only after we parse fwnode into props. > > > > > > > > Fixes: 77dce3a22e89 ("leds: disallow /sys/class/leds/*:multi:* for now") > > > > Signed-off-by: Marek Beh'un <kabel@kernel.org> > > > > > > I've just discovered this has broken boot on my Libre Computer > > > AML-A311D-CC-V0.2, which was working just fine with Debian 12's stock kernel: > > > > Sorry the the noise; I've just spotted this is fixed by: > > > > https://lore.kernel.org/linux-leds/20230918140724.18634-1-kabel@kernel.org/ > > > > ... and I look forward to that hitting mainline :) > > Your long agonising wait is over: > > commit 9dc1664fab2246bc2c3e9bf2cf21518a857f9b5b > Author: Marek Beh'un <kabel@kernel.org> > Date: Mon Sep 18 16:07:24 2023 +0200 > > leds: Drop BUG_ON check for LED_COLOR_ID_MULTI > > Commit c3f853184bed ("leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that > is always false") fixed a no-op BUG_ON. This turned out to cause a > regression, since some in-tree device-tree files already use > LED_COLOR_ID_MULTI. > > Drop the BUG_ON altogether. > > Fixes: c3f853184bed ("leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that is always false") > Reported-by: Da Xue <da@libre.computer> > Closes: https://lore.kernel.org/linux-leds/ZQLelWcNjjp2xndY@duo.ucw.cz/T/ > Signed-off-by: Marek Beh'un <kabel@kernel.org> > Link: https://lore.kernel.org/r/20230918140724.18634-1-kabel@kernel.org > Signed-off-by: Lee Jones <lee@kernel.org> > --- > drivers/leds/led-core.c | 4 ---- > 1 file changed, 4 deletions(-) Ah, doubly sorry then! I must've messed up when checking the logs for drivers/leds/... Thanks, regardless! Mark. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-10-06 15:11 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-08-01 15:16 [PATCH] leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that is always false Marek Behún 2023-08-17 10:26 ` (subset) " Lee Jones 2023-10-06 14:24 ` Mark Rutland 2023-10-06 14:39 ` Mark Rutland 2023-10-06 14:45 ` Lee Jones 2023-10-06 15:11 ` Mark Rutland
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.