Просмотр исходного кода

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: 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]>
Sven Eckelmann 6 месяцев назад
Родитель
Сommit
fb01b901e7
1 измененных файлов с 2 добавлено и 2 удалено
  1. 2 2
      target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/rtl930x.c

+ 2 - 2
target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/rtl930x.c

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