Replace copy_from_user() + sscanf() with mac_pton_from_user().

While here, replace memcpy(..., ETH_ALEN) with ether_addr_copy().

Signed-off-by: Andy Shevchenko <andriy.shevche...@linux.intel.com>
---
 drivers/staging/rtl8723bs/core/rtw_debug.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/drivers/staging/rtl8723bs/core/rtw_debug.c 
b/drivers/staging/rtl8723bs/core/rtw_debug.c
index b5dd244fee8f..79ac91a6c3ba 100644
--- a/drivers/staging/rtl8723bs/core/rtw_debug.c
+++ b/drivers/staging/rtl8723bs/core/rtw_debug.c
@@ -380,21 +380,15 @@ ssize_t proc_set_roam_tgt_addr(struct file *file, const 
char __user *buffer, siz
 {
        struct net_device *dev = data;
        struct adapter *adapter = (struct adapter *)rtw_netdev_priv(dev);
-
-       char tmp[32];
        u8 addr[ETH_ALEN];
+       int ret;
 
-       if (count < 1)
-               return -EFAULT;
-
-       if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
-
-               int num = sscanf(tmp, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", addr, 
addr+1, addr+2, addr+3, addr+4, addr+5);
-               if (num == 6)
-                       memcpy(adapter->mlmepriv.roam_tgt_addr, addr, ETH_ALEN);
+       ret = mac_pton_from_user(buffer, count, addr);
+       if (ret)
+               return ret;
 
-               DBG_871X("set roam_tgt_addr to "MAC_FMT"\n", 
MAC_ARG(adapter->mlmepriv.roam_tgt_addr));
-       }
+       ether_addr_copy(adapter->mlmepriv.roam_tgt_addr, addr);
+       DBG_871X("set roam_tgt_addr to "MAC_FMT"\n", 
MAC_ARG(adapter->mlmepriv.roam_tgt_addr));
 
        return count;
 }
-- 
2.15.1

Reply via email to