From e142dc1ecc555c77826ee2706dd86f329d35597e Mon Sep 17 00:00:00 2001 From: Andy Shevchenko Date: Tue, 19 Dec 2017 20:16:05 +0200 Subject: [PATCH] uwb: Replace mac address parsing Replace sscanf() with mac_pton(). Signed-off-by: Andy Shevchenko Signed-off-by: Greg Kroah-Hartman --- drivers/uwb/Kconfig | 1 + drivers/uwb/address.c | 14 ++++---------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/drivers/uwb/Kconfig b/drivers/uwb/Kconfig index c204094e1bb4..afac2588dab4 100644 --- a/drivers/uwb/Kconfig +++ b/drivers/uwb/Kconfig @@ -5,6 +5,7 @@ menuconfig UWB tristate "Ultra Wideband devices" default n + select GENERIC_NET_UTILS help UWB is a high-bandwidth, low-power, point-to-point radio technology using a wide spectrum (3.1-10.6GHz). It is diff --git a/drivers/uwb/address.c b/drivers/uwb/address.c index 8739c4f4d015..2833be9cbc2a 100644 --- a/drivers/uwb/address.c +++ b/drivers/uwb/address.c @@ -336,23 +336,17 @@ static ssize_t uwb_rc_mac_addr_store(struct device *dev, struct uwb_mac_addr addr; ssize_t result; - result = sscanf(buf, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx\n", - &addr.data[0], &addr.data[1], &addr.data[2], - &addr.data[3], &addr.data[4], &addr.data[5]); - if (result != 6) { - result = -EINVAL; - goto out; - } + if (!mac_pton(buf, addr.data)) + return -EINVAL; if (is_multicast_ether_addr(addr.data)) { dev_err(&rc->uwb_dev.dev, "refusing to set multicast " "MAC address %s\n", buf); - result = -EINVAL; - goto out; + return -EINVAL; } result = uwb_rc_mac_addr_set(rc, &addr); if (result == 0) rc->uwb_dev.mac_addr = addr; -out: + return result < 0 ? result : size; } DEVICE_ATTR(mac_address, S_IRUGO | S_IWUSR, uwb_rc_mac_addr_show, uwb_rc_mac_addr_store);