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>
This commit is contained in:
		| @@ -85,7 +85,11 @@ swconfig_trig_update_port_mask(struct led_trigger *trigger) | |||||||
| 	sw_trig = (void *) trigger; | 	sw_trig = (void *) trigger; | ||||||
|  |  | ||||||
| 	port_mask = 0; | 	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); | 	read_lock(&trigger->leddev_list_lock); | ||||||
|  | #endif | ||||||
| 	list_for_each(entry, &trigger->led_cdevs) { | 	list_for_each(entry, &trigger->led_cdevs) { | ||||||
| 		struct led_classdev *led_cdev; | 		struct led_classdev *led_cdev; | ||||||
| 		struct swconfig_trig_data *trig_data; | 		struct swconfig_trig_data *trig_data; | ||||||
| @@ -98,7 +102,11 @@ swconfig_trig_update_port_mask(struct led_trigger *trigger) | |||||||
| 			read_unlock(&trig_data->lock); | 			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); | 	read_unlock(&trigger->leddev_list_lock); | ||||||
|  | #endif | ||||||
|  |  | ||||||
| 	sw_trig->port_mask = port_mask; | 	sw_trig->port_mask = port_mask; | ||||||
|  |  | ||||||
| @@ -418,14 +426,22 @@ swconfig_trig_update_leds(struct switch_led_trigger *sw_trig) | |||||||
| 	struct led_trigger *trigger; | 	struct led_trigger *trigger; | ||||||
|  |  | ||||||
| 	trigger = &sw_trig->trig; | 	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); | 	read_lock(&trigger->leddev_list_lock); | ||||||
|  | #endif | ||||||
| 	list_for_each(entry, &trigger->led_cdevs) { | 	list_for_each(entry, &trigger->led_cdevs) { | ||||||
| 		struct led_classdev *led_cdev; | 		struct led_classdev *led_cdev; | ||||||
|  |  | ||||||
| 		led_cdev = list_entry(entry, struct led_classdev, trig_list); | 		led_cdev = list_entry(entry, struct led_classdev, trig_list); | ||||||
| 		swconfig_trig_led_event(sw_trig, led_cdev); | 		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); | 	read_unlock(&trigger->leddev_list_lock); | ||||||
|  | #endif | ||||||
| } | } | ||||||
|  |  | ||||||
| static void | static void | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Christian Marangi
					Christian Marangi