mirror of https://github.com/hak5/openwrt.git
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: 48774lede-17.01
parent
3f76eeaadc
commit
f61a80444c
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue