Whamcloud - gitweb
LU-7334 lprocfs: Refactored string to value helpers
[fs/lustre-release.git] / lustre / mdt / mdt_lproc.c
index 612da16..4b288ed 100644 (file)
@@ -228,13 +228,17 @@ mdt_identity_expire_seq_write(struct file *file, const char __user *buffer,
        struct seq_file   *m = file->private_data;
        struct obd_device *obd = m->private;
        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-       int rc, val;
+       int rc;
+       __s64 val;
 
-       rc = lprocfs_write_helper(buffer, count, &val);
+       rc = lprocfs_str_to_s64(buffer, count, &val);
        if (rc)
                return rc;
+       if (val < 0 || val > INT_MAX)
+               return -ERANGE;
 
        mdt->mdt_identity_cache->uc_entry_expire = val;
+
        return count;
 }
 LPROC_SEQ_FOPS(mdt_identity_expire);
@@ -256,13 +260,17 @@ mdt_identity_acquire_expire_seq_write(struct file *file,
        struct seq_file   *m = file->private_data;
        struct obd_device *obd = m->private;
        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-       int rc, val;
+       int rc;
+       __s64 val;
 
-       rc = lprocfs_write_helper(buffer, count, &val);
+       rc = lprocfs_str_to_s64(buffer, count, &val);
        if (rc)
                return rc;
+       if (val < 0 || val > INT_MAX)
+               return -ERANGE;
 
        mdt->mdt_identity_cache->uc_acquire_expire = val;
+
        return count;
 }
 LPROC_SEQ_FOPS(mdt_identity_acquire_expire);
@@ -332,11 +340,14 @@ lprocfs_identity_flush_seq_write(struct file *file, const char __user *buffer,
        struct seq_file   *m = file->private_data;
        struct obd_device *obd = m->private;
        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-       int rc, uid;
+       int rc;
+       __s64 uid;
 
-       rc = lprocfs_write_helper(buffer, count, &uid);
+       rc = lprocfs_str_to_s64(buffer, count, &uid);
        if (rc)
                return rc;
+       if (uid < INT_MIN || uid > INT_MAX)
+               return -ERANGE;
 
        mdt_flush_identity(mdt->mdt_identity_cache, uid);
        return count;
@@ -492,9 +503,10 @@ mdt_evict_tgt_nids_seq_write(struct file *file, const char __user *buffer,
        struct seq_file   *m = file->private_data;
        struct obd_device *obd = m->private;
        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-       int val, rc;
+       __s64 val;
+       int rc;
 
-       rc = lprocfs_write_helper(buffer, count, &val);
+       rc = lprocfs_str_to_s64(buffer, count, &val);
        if (rc)
                return rc;
        mdt->mdt_opts.mo_evict_tgt_nids = !!val;
@@ -519,22 +531,24 @@ mdt_sec_level_seq_write(struct file *file, const char __user *buffer,
        struct seq_file   *m = file->private_data;
        struct obd_device *obd = m->private;
        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-       int val, rc;
+       int rc;
+       __s64 val;
 
-        rc = lprocfs_write_helper(buffer, count, &val);
-        if (rc)
-                return rc;
+       rc = lprocfs_str_to_s64(buffer, count, &val);
+       if (rc)
+               return rc;
 
-        if (val > LUSTRE_SEC_ALL || val < LUSTRE_SEC_NONE)
-                return -EINVAL;
+       if (val > LUSTRE_SEC_ALL || val < LUSTRE_SEC_NONE)
+               return -EINVAL;
 
-        if (val == LUSTRE_SEC_SPECIFY) {
-                CWARN("security level %d will be supported in future.\n",
-                      LUSTRE_SEC_SPECIFY);
-                return -EINVAL;
-        }
+       if (val == LUSTRE_SEC_SPECIFY) {
+               CWARN("security level %d will be supported in future.\n",
+                     LUSTRE_SEC_SPECIFY);
+               return -EINVAL;
+       }
 
        mdt->mdt_lut.lut_sec_level = val;
+
        return count;
 }
 LPROC_SEQ_FOPS(mdt_sec_level);
@@ -555,11 +569,15 @@ mdt_cos_seq_write(struct file *file, const char __user *buffer,
        struct seq_file   *m = file->private_data;
        struct obd_device *obd = m->private;
        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-       int val, rc;
+       int rc;
+       __s64 val;
 
-       rc = lprocfs_write_helper(buffer, count, &val);
+       rc = lprocfs_str_to_s64(buffer, count, &val);
        if (rc)
                return rc;
+       if (val < INT_MIN || val > INT_MAX)
+               return -ERANGE;
+
        mdt_enable_cos(mdt, val);
        return count;
 }
@@ -640,14 +658,14 @@ mdt_enable_remote_dir_seq_write(struct file *file, const char __user *buffer,
        struct seq_file   *m = file->private_data;
        struct obd_device *obd = m->private;
        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-       __u32 val;
+       __s64 val;
        int rc;
 
-       rc = lprocfs_write_helper(buffer, count, &val);
+       rc = lprocfs_str_to_s64(buffer, count, &val);
        if (rc)
                return rc;
 
-       if (val > 1)
+       if (val > 1 || val < 0)
                return -ERANGE;
 
        mdt->mdt_enable_remote_dir = val;
@@ -673,10 +691,10 @@ mdt_enable_remote_dir_gid_seq_write(struct file *file,
        struct seq_file   *m = file->private_data;
        struct obd_device *obd = m->private;
        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-       __u32 val;
+       __s64 val;
        int rc;
 
-       rc = lprocfs_write_helper(buffer, count, &val);
+       rc = lprocfs_str_to_s64(buffer, count, &val);
        if (rc)
                return rc;
 
@@ -730,13 +748,16 @@ mdt_async_commit_count_seq_write(struct file *file, const char __user *buffer,
        struct seq_file *m = file->private_data;
        struct obd_device *obd = m->private;
        struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
-       int val;
+       __s64 val;
        int rc;
 
-       rc = lprocfs_write_helper(buffer, count, &val);
+       rc = lprocfs_str_to_s64(buffer, count, &val);
        if (rc)
                return rc;
 
+       if (val < INT_MIN || val > INT_MAX)
+               return -ERANGE;
+
        atomic_set(&mdt->mdt_async_commit_count, val);
 
        return count;
@@ -768,13 +789,16 @@ mdt_sync_count_seq_write(struct file *file, const char __user *buffer,
        struct seq_file *m = file->private_data;
        struct obd_device *obd = m->private;
        struct lu_target *tgt = obd->u.obt.obt_lut;
-       int val;
+       __s64 val;
        int rc;
 
-       rc = lprocfs_write_helper(buffer, count, &val);
+       rc = lprocfs_str_to_s64(buffer, count, &val);
        if (rc)
                return rc;
 
+       if (val < INT_MIN || val > INT_MAX)
+               return -ERANGE;
+
        atomic_set(&tgt->lut_sync_count, val);
 
        return count;