From: Dmitry Antipov Date: Fri, 17 Apr 2026 10:55:56 +0000 (+0300) Subject: wifi: mac80211: use kstrtobool_from_user() in debugfs callbacks X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9fd003edab0216df681c98277d3723cc1d535948;p=thirdparty%2Fkernel%2Flinux.git wifi: mac80211: use kstrtobool_from_user() in debugfs callbacks Prefer 'kstrtobool_from_user()' over an ad-hoc quirks in 'aql_enable_write()' and 'force_tx_status_write()' callbacks. Signed-off-by: Dmitry Antipov Link: https://patch.msgid.link/20260417105556.2886928-1-dmantipov@yandex.ru Signed-off-by: Johannes Berg --- diff --git a/net/mac80211/debugfs.c b/net/mac80211/debugfs.c index 5a1831b08677b..a4d5461f6480f 100644 --- a/net/mac80211/debugfs.c +++ b/net/mac80211/debugfs.c @@ -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; }