realtek: rtl930x: Fix out-of-bounds check in LED set configuration

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: 2cfb1ecf10 ("rtl930x: Rework per port LED configuration")
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20300
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
Sven Eckelmann 2025-07-15 19:53:07 +02:00 committed by Hauke Mehrtens
parent ebb79d0f84
commit fb01b901e7

View 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;
}