[OpenWrt-Devel] [PATCH 1/4] switch: make LED port_mask file write handler use kstrtoul() function

Michal michal.cieslakiewicz at wp.pl
Thu Feb 11 18:53:28 EST 2016


From: Michal Cieslakiewicz <michal.cieslakiewicz at wp.pl>
Subject: [PATCH 1/4] 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 at wp.pl>
---
 .../generic/files/drivers/net/phy/swconfig_leds.c  | 41 +++++++++-------------
 1 file changed, 16 insertions(+), 25 deletions(-)

diff --git a/target/linux/generic/files/drivers/net/phy/swconfig_leds.c b/target/linux/generic/files/drivers/net/phy/swconfig_leds.c
index abd7bed..7d122d2 100644
--- a/target/linux/generic/files/drivers/net/phy/swconfig_leds.c
+++ b/target/linux/generic/files/drivers/net/phy/swconfig_leds.c
@@ -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 swconfig_trig_data *trig_data = led_cdev->trigger_data;
 	unsigned long port_mask;
-	ssize_t ret = -EINVAL;
-	char *after;
-	size_t count;
+	int ret;
+	bool changed;
 
-	port_mask = simple_strtoul(buf, &after, 16);
-	count =	after - buf;
+	ret = kstrtoul(buf, 0, &port_mask);
+	if (ret)
+		return ret;
 
-	if (*after && isspace(*after))
-		count++;
+	write_lock(&trig_data->lock);
 
-	if (count == size) {
-		bool changed;
-
-		write_lock(&trig_data->lock);
-
-		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);
+	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);
+	}
 
-		if (changed)
-			swconfig_trig_update_port_mask(led_cdev->trigger);
+	write_unlock(&trig_data->lock);
 
-		ret = count;
-	}
+	if (changed)
+		swconfig_trig_update_port_mask(led_cdev->trigger);
 
-	return ret;
+	return size;
 }
 
 static ssize_t
-- 
2.6.4
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list