]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: mac80211: use kstrtobool_from_user() in debugfs callbacks
authorDmitry Antipov <dmantipov@yandex.ru>
Fri, 17 Apr 2026 10:55:56 +0000 (13:55 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 28 Apr 2026 07:31:27 +0000 (09:31 +0200)
Prefer 'kstrtobool_from_user()' over an ad-hoc quirks in
'aql_enable_write()' and 'force_tx_status_write()' callbacks.

Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
Link: https://patch.msgid.link/20260417105556.2886928-1-dmantipov@yandex.ru
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/debugfs.c

index 5a1831b08677bda0a77a9bdb52c176ae9fc23920..a4d5461f6480f0e4d63acaba8da1ccd529eba3aa 100644 (file)
@@ -320,26 +320,17 @@ static ssize_t aql_enable_read(struct file *file, char __user *user_buf,
 static ssize_t aql_enable_write(struct file *file, const char __user *user_buf,
                                size_t count, loff_t *ppos)
 {
-       char buf[3];
-       size_t len;
-
-       if (count > sizeof(buf))
-               return -EINVAL;
-
-       if (copy_from_user(buf, user_buf, count))
-               return -EFAULT;
+       bool val;
+       int ret;
 
-       buf[sizeof(buf) - 1] = '\0';
-       len = strlen(buf);
-       if (len > 0 && buf[len - 1] == '\n')
-               buf[len - 1] = 0;
+       ret = kstrtobool_from_user(user_buf, count, &val);
+       if (unlikely(ret))
+               return ret;
 
-       if (buf[0] == '0' && buf[1] == '\0')
-               static_branch_enable(&aql_disable);
-       else if (buf[0] == '1' && buf[1] == '\0')
+       if (val)
                static_branch_disable(&aql_disable);
        else
-               return -EINVAL;
+               static_branch_enable(&aql_disable);
 
        return count;
 }
@@ -371,26 +362,14 @@ static ssize_t force_tx_status_write(struct file *file,
                                     loff_t *ppos)
 {
        struct ieee80211_local *local = file->private_data;
-       char buf[3];
-
-       if (count >= sizeof(buf))
-               return -EINVAL;
-
-       if (copy_from_user(buf, user_buf, count))
-               return -EFAULT;
-
-       if (count && buf[count - 1] == '\n')
-               buf[count - 1] = '\0';
-       else
-               buf[count] = '\0';
+       bool val;
+       int ret;
 
-       if (buf[0] == '0' && buf[1] == '\0')
-               local->force_tx_status = 0;
-       else if (buf[0] == '1' && buf[1] == '\0')
-               local->force_tx_status = 1;
-       else
-               return -EINVAL;
+       ret = kstrtobool_from_user(user_buf, count, &val);
+       if (unlikely(ret))
+               return ret;
 
+       local->force_tx_status = val;
        return count;
 }