switch: make LED port_mask file write handler use kstrtoul() function

This patch changes swconfig_trig_port_mask_store() handler to utilize
kstrtoul() function instead of call to obsolete simple_strtoul(). Thanks
to this change, new handler takes less memory and makes port_mask special
file accept not only hexadecimal, but also decimal and octal numbers.

Signed-off-by: Michal Cieslakiewicz <michal.cieslakiewicz@wp.pl>

SVN-Revision: 48774
owl
Felix Fietkau 2016-02-25 13:31:23 +00:00
parent 3f76eeaadc
commit f61a80444c
1 changed files with 17 additions and 26 deletions

View File

@ -94,37 +94,28 @@ swconfig_trig_port_mask_store(struct device *dev, struct device_attribute *attr,
struct led_classdev *led_cdev = dev_get_drvdata(dev); struct led_classdev *led_cdev = dev_get_drvdata(dev);
struct swconfig_trig_data *trig_data = led_cdev->trigger_data; struct swconfig_trig_data *trig_data = led_cdev->trigger_data;
unsigned long port_mask; unsigned long port_mask;
ssize_t ret = -EINVAL; int ret;
char *after; bool changed;
size_t count;
port_mask = simple_strtoul(buf, &after, 16); ret = kstrtoul(buf, 0, &port_mask);
count = after - buf; if (ret)
return ret;
if (*after && isspace(*after)) write_lock(&trig_data->lock);
count++;
if (count == size) { changed = (trig_data->port_mask != port_mask);
bool changed; if (changed) {
trig_data->port_mask = port_mask;
write_lock(&trig_data->lock); if (port_mask == 0)
swconfig_trig_set_brightness(trig_data, LED_OFF);
changed = (trig_data->port_mask != port_mask);
if (changed) {
trig_data->port_mask = port_mask;
if (port_mask == 0)
swconfig_trig_set_brightness(trig_data, LED_OFF);
}
write_unlock(&trig_data->lock);
if (changed)
swconfig_trig_update_port_mask(led_cdev->trigger);
ret = count;
} }
return ret; write_unlock(&trig_data->lock);
if (changed)
swconfig_trig_update_port_mask(led_cdev->trigger);
return size;
} }
static ssize_t static ssize_t