kernel: refresh swconfig_leds to handle new trigger locking
authorChristian Marangi <ansuelsmth@gmail.com>
Thu, 20 Oct 2022 00:20:17 +0000 (02:20 +0200)
committerChristian Marangi <ansuelsmth@gmail.com>
Mon, 22 May 2023 20:28:17 +0000 (22:28 +0200)
Refresh swconfig_leds source to handle new trigger locking that is now a
spinlock.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
target/linux/generic/files/drivers/net/phy/swconfig_leds.c

index df53e5cd4a21a63e33756a9092e4a38ad12adfba..1d309c046c8df861a1f63b7f2b2cb9f6401f8801 100644 (file)
@@ -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