realtek: rtl930x: Fix out-of-bounds check in LED set configuration
authorSven Eckelmann <[email protected]>
Tue, 15 Jul 2025 17:53:07 +0000 (19:53 +0200)
committerHauke Mehrtens <[email protected]>
Mon, 6 Oct 2025 22:13:43 +0000 (00:13 +0200)
of_property_count_u32_elems returns the number of u32 and not the number of
bytes. It must therefore be checked against the number of u32 in set_config
and not the bytes in set_config.

Fixes: 2cfb1ecf1035 ("rtl930x: Rework per port LED configuration")
Signed-off-by: Sven Eckelmann <[email protected]>
Link: https://github.com/openwrt/openwrt/pull/20300
Signed-off-by: Hauke Mehrtens <[email protected]>
target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/rtl930x.c

index 0a83a0624caa672c83d5d41233b394de65ff8192..e507a931cf82464e50355a68f419dd34f0e44aad 100644 (file)
@@ -2392,10 +2392,10 @@ static void rtl930x_led_init(struct rtl838x_switch_priv *priv)
                sprintf(set_name, "led_set%d", set);
                leds_in_this_set = of_property_count_u32_elems(node, set_name);
 
-               if (leds_in_this_set <= 0 || leds_in_this_set > sizeof(set_config)) {
+               if (leds_in_this_set <= 0 || leds_in_this_set > ARRAY_SIZE(set_config)) {
                        if (leds_in_this_set != -EINVAL) {
                                dev_err(dev, "%s invalid, skipping this set, leds_in_this_set=%d, should be (0, %d]\n",
-                                       set_name, leds_in_this_set, sizeof(set_config));
+                                       set_name, leds_in_this_set, ARRAY_SIZE(set_config));
                        }
                        continue;
                }