Use memdup_user() helper instead of open-coding to simplify the code.

Signed-off-by: Geliang Tang <geliangt...@gmail.com>
---
 drivers/net/wireless/ath/wil6210/debugfs.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/net/wireless/ath/wil6210/debugfs.c 
b/drivers/net/wireless/ath/wil6210/debugfs.c
index 5648ebb..5b0f9fc 100644
--- a/drivers/net/wireless/ath/wil6210/debugfs.c
+++ b/drivers/net/wireless/ath/wil6210/debugfs.c
@@ -795,15 +795,11 @@ static ssize_t wil_write_file_txmgmt(struct file *file, 
const char __user *buf,
        struct wireless_dev *wdev = wil_to_wdev(wil);
        struct cfg80211_mgmt_tx_params params;
        int rc;
-       void *frame = kmalloc(len, GFP_KERNEL);
+       void *frame;
 
-       if (!frame)
-               return -ENOMEM;
-
-       if (copy_from_user(frame, buf, len)) {
-               kfree(frame);
-               return -EIO;
-       }
+       frame = memdup_user(buf, len);
+       if (IS_ERR(frame))
+               return PTR_ERR(frame);
 
        params.buf = frame;
        params.len = len;
-- 
2.9.3

Reply via email to