From 11f70002213774ed233950f71ea8803fa3700aa3 Mon Sep 17 00:00:00 2001 From: Akinobu Mita Date: Sun, 29 Sep 2019 23:18:49 +0900 Subject: leds: remove PAGE_SIZE limit of /sys/class/leds//trigger Reading /sys/class/leds//trigger returns all available LED triggers. However, the size of this file is limited to PAGE_SIZE because of the limitation for sysfs attribute. Enabling LED CPU trigger on systems with thousands of CPUs easily hits PAGE_SIZE limit, and makes it impossible to see all available LED triggers and which trigger is currently activated. We work around it here by converting /sys/class/leds//trigger to binary attribute, which is not limited by length. This is _not_ good design, do not copy it. Signed-off-by: Akinobu Mita Cc: "Rafael J. Wysocki" Cc: Pavel Machek Cc: Dan Murphy A Reviewed-by: Greg Kroah-Hartman Signed-off-by: Pavel Machek --- drivers/leds/leds.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'drivers/leds/leds.h') diff --git a/drivers/leds/leds.h b/drivers/leds/leds.h index 0b577cece8f7..2d9eb48bbed9 100644 --- a/drivers/leds/leds.h +++ b/drivers/leds/leds.h @@ -23,6 +23,12 @@ void led_set_brightness_nopm(struct led_classdev *led_cdev, enum led_brightness value); void led_set_brightness_nosleep(struct led_classdev *led_cdev, enum led_brightness value); +ssize_t led_trigger_read(struct file *filp, struct kobject *kobj, + struct bin_attribute *attr, char *buf, + loff_t pos, size_t count); +ssize_t led_trigger_write(struct file *filp, struct kobject *kobj, + struct bin_attribute *bin_attr, char *buf, + loff_t pos, size_t count); extern struct rw_semaphore leds_list_lock; extern struct list_head leds_list; -- cgit v1.2.3-59-g8ed1b