uwb: Replace mac address parsing
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 19 Dec 2017 18:16:05 +0000 (20:16 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 9 Jan 2018 15:15:20 +0000 (16:15 +0100)
Replace sscanf() with mac_pton().

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/uwb/Kconfig
drivers/uwb/address.c

index c204094..afac258 100644 (file)
@@ -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
index 8739c4f..2833be9 100644 (file)
@@ -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);