diff options
| author | Christian Marangi | 2022-10-20 00:20:17 +0000 |
|---|---|---|
| committer | Christian Marangi | 2023-05-22 20:28:17 +0000 |
| commit | fb6de77a824d6d7542ad314721448fcb8c6ccc1a (patch) | |
| tree | 51717deb38a80c8d02861bd85e439594c7a4a915 | |
| parent | 5f987b84ef0b5d6dc2bcc3d15819e1358d1f3eb0 (diff) | |
| download | ldir-fb6de77a824d6d7542ad314721448fcb8c6ccc1a.tar.gz | |
kernel: refresh swconfig_leds to handle new trigger locking
Refresh swconfig_leds source to handle new trigger locking that is now a
spinlock.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
| -rw-r--r-- | target/linux/generic/files/drivers/net/phy/swconfig_leds.c | 16 |
1 files changed, 16 insertions, 0 deletions
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 df53e5cd4a..1d309c046c 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,16,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,7 +102,11 @@ swconfig_trig_update_port_mask(struct led_trigger *trigger) read_unlock(&trig_data->lock); } } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,16,0) + spin_unlock(&trigger->leddev_list_lock); +#else read_unlock(&trigger->leddev_list_lock); +#endif sw_trig->port_mask = port_mask; @@ -418,14 +426,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,16,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,16,0) + spin_unlock(&trigger->leddev_list_lock); +#else read_unlock(&trigger->leddev_list_lock); +#endif } static void |