From ebfa1b93b76d5a2faacecbc8ed237ed44f5a7018 Mon Sep 17 00:00:00 2001 From: lean Date: Thu, 21 Jul 2022 15:10:56 +0800 Subject: [PATCH] generic: fix swconfig_leds.c in 5.18 --- .../files/drivers/net/phy/swconfig_leds.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/target/linux/generic/files/drivers/net/phy/swconfig_leds.c b/target/linux/generic/files/drivers/net/phy/swconfig_leds.c index df53e5cd4..95dbdb76f 100644 --- a/target/linux/generic/files/drivers/net/phy/swconfig_leds.c +++ b/target/linux/generic/files/drivers/net/phy/swconfig_leds.c @@ -85,7 +85,11 @@ swconfig_trig_update_port_mask(struct led_trigger *trigger) sw_trig = (void *) trigger; port_mask = 0; +#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 15, 0) + spin_lock(&trigger->leddev_list_lock); +#else read_lock(&trigger->leddev_list_lock); +#endif list_for_each(entry, &trigger->led_cdevs) { struct led_classdev *led_cdev; struct swconfig_trig_data *trig_data; @@ -98,8 +102,11 @@ swconfig_trig_update_port_mask(struct led_trigger *trigger) read_unlock(&trig_data->lock); } } +#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 15, 0) + spin_unlock(&trigger->leddev_list_lock); +#else read_unlock(&trigger->leddev_list_lock); - +#endif sw_trig->port_mask = port_mask; if (port_mask) @@ -418,14 +425,22 @@ swconfig_trig_update_leds(struct switch_led_trigger *sw_trig) struct led_trigger *trigger; trigger = &sw_trig->trig; +#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 15, 0) + spin_lock(&trigger->leddev_list_lock); +#else read_lock(&trigger->leddev_list_lock); +#endif list_for_each(entry, &trigger->led_cdevs) { struct led_classdev *led_cdev; led_cdev = list_entry(entry, struct led_classdev, trig_list); swconfig_trig_led_event(sw_trig, led_cdev); } +#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 15, 0) + spin_unlock(&trigger->leddev_list_lock); +#else read_unlock(&trigger->leddev_list_lock); +#endif } static void