wifi: ath9k: consistently use kstrtoX_from_user() functions
authorDmitry Antipov <dmantipov@yandex.ru>
Wed, 26 Jul 2023 18:50:08 +0000 (21:50 +0300)
committerKalle Valo <quic_kvalo@quicinc.com>
Tue, 22 Aug 2023 13:37:53 +0000 (16:37 +0300)
Use 'kstrtoul_from_user()' and 'kstrtobool_from_user()'
where appropriate and thus avoid some code duplication.

Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
Acked-by: Toke Høiland-Jørgensen <toke@toke.dk>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20230726185046.188225-1-dmantipov@yandex.ru
drivers/net/wireless/ath/ath9k/common-spectral.c
drivers/net/wireless/ath/ath9k/debug.c
drivers/net/wireless/ath/ath9k/dfs_debug.c
drivers/net/wireless/ath/ath9k/htc_drv_debug.c
drivers/net/wireless/ath/ath9k/tx99.c

index e055adf..a5349c7 100644 (file)
@@ -855,16 +855,11 @@ static ssize_t write_file_spectral_short_repeat(struct file *file,
 {
        struct ath_spec_scan_priv *spec_priv = file->private_data;
        unsigned long val;
-       char buf[32];
-       ssize_t len;
-
-       len = min(count, sizeof(buf) - 1);
-       if (copy_from_user(buf, user_buf, len))
-               return -EFAULT;
+       ssize_t ret;
 
-       buf[len] = '\0';
-       if (kstrtoul(buf, 0, &val))
-               return -EINVAL;
+       ret = kstrtoul_from_user(user_buf, count, 0, &val);
+       if (ret)
+               return ret;
 
        if (val > 1)
                return -EINVAL;
@@ -903,17 +898,11 @@ static ssize_t write_file_spectral_count(struct file *file,
 {
        struct ath_spec_scan_priv *spec_priv = file->private_data;
        unsigned long val;
-       char buf[32];
-       ssize_t len;
-
-       len = min(count, sizeof(buf) - 1);
-       if (copy_from_user(buf, user_buf, len))
-               return -EFAULT;
-
-       buf[len] = '\0';
-       if (kstrtoul(buf, 0, &val))
-               return -EINVAL;
+       ssize_t ret;
 
+       ret = kstrtoul_from_user(user_buf, count, 0, &val);
+       if (ret)
+               return ret;
        if (val > 255)
                return -EINVAL;
 
@@ -951,16 +940,11 @@ static ssize_t write_file_spectral_period(struct file *file,
 {
        struct ath_spec_scan_priv *spec_priv = file->private_data;
        unsigned long val;
-       char buf[32];
-       ssize_t len;
-
-       len = min(count, sizeof(buf) - 1);
-       if (copy_from_user(buf, user_buf, len))
-               return -EFAULT;
+       ssize_t ret;
 
-       buf[len] = '\0';
-       if (kstrtoul(buf, 0, &val))
-               return -EINVAL;
+       ret = kstrtoul_from_user(user_buf, count, 0, &val);
+       if (ret)
+               return ret;
 
        if (val > 255)
                return -EINVAL;
@@ -999,16 +983,11 @@ static ssize_t write_file_spectral_fft_period(struct file *file,
 {
        struct ath_spec_scan_priv *spec_priv = file->private_data;
        unsigned long val;
-       char buf[32];
-       ssize_t len;
-
-       len = min(count, sizeof(buf) - 1);
-       if (copy_from_user(buf, user_buf, len))
-               return -EFAULT;
+       ssize_t ret;
 
-       buf[len] = '\0';
-       if (kstrtoul(buf, 0, &val))
-               return -EINVAL;
+       ret = kstrtoul_from_user(user_buf, count, 0, &val);
+       if (ret)
+               return ret;
 
        if (val > 15)
                return -EINVAL;
index 995c6e7..9bc57c5 100644 (file)
@@ -96,21 +96,16 @@ static ssize_t read_file_debug(struct file *file, char __user *user_buf,
 }
 
 static ssize_t write_file_debug(struct file *file, const char __user *user_buf,
-                            size_t count, loff_t *ppos)
+                               size_t count, loff_t *ppos)
 {
        struct ath_softc *sc = file->private_data;
        struct ath_common *common = ath9k_hw_common(sc->sc_ah);
        unsigned long mask;
-       char buf[32];
-       ssize_t len;
+       ssize_t ret;
 
-       len = min(count, sizeof(buf) - 1);
-       if (copy_from_user(buf, user_buf, len))
-               return -EFAULT;
-
-       buf[len] = '\0';
-       if (kstrtoul(buf, 0, &mask))
-               return -EINVAL;
+       ret = kstrtoul_from_user(user_buf, count, 0, &mask);
+       if (ret)
+               return ret;
 
        common->debug_mask = mask;
        return count;
@@ -191,16 +186,11 @@ static ssize_t write_file_ani(struct file *file,
        struct ath_softc *sc = file->private_data;
        struct ath_common *common = ath9k_hw_common(sc->sc_ah);
        unsigned long ani;
-       char buf[32];
-       ssize_t len;
+       ssize_t ret;
 
-       len = min(count, sizeof(buf) - 1);
-       if (copy_from_user(buf, user_buf, len))
-               return -EFAULT;
-
-       buf[len] = '\0';
-       if (kstrtoul(buf, 0, &ani))
-               return -EINVAL;
+       ret = kstrtoul_from_user(user_buf, count, 0, &ani);
+       if (ret)
+               return ret;
 
        if (ani > 1)
                return -EINVAL;
@@ -248,20 +238,15 @@ static ssize_t write_file_bt_ant_diversity(struct file *file,
        struct ath_common *common = ath9k_hw_common(sc->sc_ah);
        struct ath9k_hw_capabilities *pCap = &sc->sc_ah->caps;
        unsigned long bt_ant_diversity;
-       char buf[32];
-       ssize_t len;
+       ssize_t ret;
 
-       len = min(count, sizeof(buf) - 1);
-       if (copy_from_user(buf, user_buf, len))
-               return -EFAULT;
+       ret = kstrtoul_from_user(user_buf, count, 0, &bt_ant_diversity);
+       if (ret)
+               return ret;
 
        if (!(pCap->hw_caps & ATH9K_HW_CAP_BT_ANT_DIV))
                goto exit;
 
-       buf[len] = '\0';
-       if (kstrtoul(buf, 0, &bt_ant_diversity))
-               return -EINVAL;
-
        common->bt_ant_diversity = !!bt_ant_diversity;
        ath9k_ps_wakeup(sc);
        ath9k_hw_set_bt_ant_diversity(sc->sc_ah, common->bt_ant_diversity);
@@ -792,16 +777,11 @@ static ssize_t write_file_reset(struct file *file,
        struct ath_hw *ah = sc->sc_ah;
        struct ath_common *common = ath9k_hw_common(ah);
        unsigned long val;
-       char buf[32];
-       ssize_t len;
-
-       len = min(count, sizeof(buf) - 1);
-       if (copy_from_user(buf, user_buf, len))
-               return -EFAULT;
+       ssize_t ret;
 
-       buf[len] = '\0';
-       if (kstrtoul(buf, 0, &val))
-               return -EINVAL;
+       ret = kstrtoul_from_user(user_buf, count, 0, &val);
+       if (ret)
+               return ret;
 
        if (val != 1)
                return -EINVAL;
@@ -886,16 +866,11 @@ static ssize_t write_file_regidx(struct file *file, const char __user *user_buf,
 {
        struct ath_softc *sc = file->private_data;
        unsigned long regidx;
-       char buf[32];
-       ssize_t len;
+       ssize_t ret;
 
-       len = min(count, sizeof(buf) - 1);
-       if (copy_from_user(buf, user_buf, len))
-               return -EFAULT;
-
-       buf[len] = '\0';
-       if (kstrtoul(buf, 0, &regidx))
-               return -EINVAL;
+       ret = kstrtoul_from_user(user_buf, count, 0, &regidx);
+       if (ret)
+               return ret;
 
        sc->debug.regidx = regidx;
        return count;
@@ -931,16 +906,11 @@ static ssize_t write_file_regval(struct file *file, const char __user *user_buf,
        struct ath_softc *sc = file->private_data;
        struct ath_hw *ah = sc->sc_ah;
        unsigned long regval;
-       char buf[32];
-       ssize_t len;
-
-       len = min(count, sizeof(buf) - 1);
-       if (copy_from_user(buf, user_buf, len))
-               return -EFAULT;
+       ssize_t ret;
 
-       buf[len] = '\0';
-       if (kstrtoul(buf, 0, &regval))
-               return -EINVAL;
+       ret = kstrtoul_from_user(user_buf, count, 0, &regval);
+       if (ret)
+               return ret;
 
        ath9k_ps_wakeup(sc);
        REG_WRITE_D(ah, sc->debug.regidx, regval);
@@ -1128,16 +1098,11 @@ static ssize_t write_file_wow(struct file *file, const char __user *user_buf,
 {
        struct ath_softc *sc = file->private_data;
        unsigned long val;
-       char buf[32];
-       ssize_t len;
-
-       len = min(count, sizeof(buf) - 1);
-       if (copy_from_user(buf, user_buf, len))
-               return -EFAULT;
+       ssize_t ret;
 
-       buf[len] = '\0';
-       if (kstrtoul(buf, 0, &val))
-               return -EINVAL;
+       ret = kstrtoul_from_user(user_buf, count, 0, &val);
+       if (ret)
+               return ret;
 
        if (val != 1)
                return -EINVAL;
@@ -1191,17 +1156,12 @@ static ssize_t write_file_tpc(struct file *file, const char __user *user_buf,
        struct ath_softc *sc = file->private_data;
        struct ath_hw *ah = sc->sc_ah;
        unsigned long val;
-       char buf[32];
-       ssize_t len;
+       ssize_t ret;
        bool tpc_enabled;
 
-       len = min(count, sizeof(buf) - 1);
-       if (copy_from_user(buf, user_buf, len))
-               return -EFAULT;
-
-       buf[len] = '\0';
-       if (kstrtoul(buf, 0, &val))
-               return -EINVAL;
+       ret = kstrtoul_from_user(user_buf, count, 0, &val);
+       if (ret)
+               return ret;
 
        if (val > 1)
                return -EINVAL;
index 2a79c2f..8e18e9b 100644 (file)
@@ -99,17 +99,11 @@ static ssize_t write_file_dfs(struct file *file, const char __user *user_buf,
 {
        struct ath_softc *sc = file->private_data;
        unsigned long val;
-       char buf[32];
-       ssize_t len;
-
-       len = min(count, sizeof(buf) - 1);
-       if (copy_from_user(buf, user_buf, len))
-               return -EFAULT;
-
-       buf[len] = '\0';
-       if (kstrtoul(buf, 0, &val))
-               return -EINVAL;
+       ssize_t ret;
 
+       ret = kstrtoul_from_user(user_buf, count, 0, &val);
+       if (ret)
+               return ret;
        if (val == DFS_STATS_RESET_MAGIC)
                memset(&sc->debug.stats.dfs_stats, 0,
                       sizeof(sc->debug.stats.dfs_stats));
index b3ed65e..1ed2b12 100644 (file)
@@ -375,16 +375,11 @@ static ssize_t write_file_debug(struct file *file, const char __user *user_buf,
        struct ath9k_htc_priv *priv = file->private_data;
        struct ath_common *common = ath9k_hw_common(priv->ah);
        unsigned long mask;
-       char buf[32];
-       ssize_t len;
-
-       len = min(count, sizeof(buf) - 1);
-       if (copy_from_user(buf, user_buf, len))
-               return -EFAULT;
+       ssize_t ret;
 
-       buf[len] = '\0';
-       if (kstrtoul(buf, 0, &mask))
-               return -EINVAL;
+       ret = kstrtoul_from_user(user_buf, count, 0, &mask);
+       if (ret)
+               return ret;
 
        common->debug_mask = mask;
        return count;
index 8a996ed..f2144fd 100644 (file)
@@ -172,9 +172,8 @@ static ssize_t write_file_tx99(struct file *file, const char __user *user_buf,
 {
        struct ath_softc *sc = file->private_data;
        struct ath_common *common = ath9k_hw_common(sc->sc_ah);
-       char buf[32];
        bool start;
-       ssize_t len;
+       ssize_t ret;
        int r;
 
        if (count < 1)
@@ -183,14 +182,9 @@ static ssize_t write_file_tx99(struct file *file, const char __user *user_buf,
        if (sc->cur_chan->nvifs > 1)
                return -EOPNOTSUPP;
 
-       len = min(count, sizeof(buf) - 1);
-       if (copy_from_user(buf, user_buf, len))
-               return -EFAULT;
-
-       buf[len] = '\0';
-
-       if (kstrtobool(buf, &start))
-               return -EINVAL;
+       ret = kstrtobool_from_user(user_buf, count, &start);
+       if (ret)
+               return ret;
 
        mutex_lock(&sc->mutex);