md: convert to kstrto*()
PATCH 1/1 md: convert to kstrto*()
Convert away from deprecated simple_strto*() functions.
Add "fit into sector_t" checks.
Signed-off-by Alexey Dobriyan <[email protected]>
---
drivers/md/md.c | 149 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 81 insertions(+), 68 deletions(-)
drivers/md/md.c +81 -68
@@ -2630,13 +2630,14 @@ errors_show(struct md_rdev *rdev, char *page)static ssize_t errors_store (struct md_rdev *rdev,const char *buf,size_t len) { -char *e; -unsigned long n =simple_strtoul (buf, &e,10 ); -if (*buf && (*e ==0 || *e =='\n' )) { -atomic_set (&rdev->corrected_errors, n); -return len; - } -return -EINVAL ; +unsigned int n; +int rv; + + rv =kstrtouint (buf,10 , &n); +if (rv <0 ) +return rv; +atomic_set (&rdev->corrected_errors, n); +return len; }static struct rdev_sysfs_entry rdev_errors =__ATTR (errors,S_IRUGO |S_IWUSR , errors_show, errors_store);
@@ -2653,13 +2654,16 @@ slot_show(struct md_rdev *rdev, char *page)static ssize_t slot_store (struct md_rdev *rdev,const char *buf,size_t len) { -char *e; +int slot;int err; -int slot =simple_strtoul (buf, &e,10 ); +if (strncmp (buf,"none" ,4 )==0 ) slot =-1 ; -else if (e==buf || (*e && *e!='\n' )) -return -EINVAL ; +else { + err =kstrtouint (buf,10 , (unsigned int *)&slot); +if (err <0 ) +return err; + }if (rdev->mddev->pers && slot ==-1 ) {/* Setting 'slot' on an active array requires also * updating the 'rd%d' link, and communicating
@@ -3544,12 +3548,12 @@ layout_show(struct mddev *mddev, char *page)static ssize_t layout_store (struct mddev *mddev,const char *buf,size_t len) { -char *e; -unsigned long n =simple_strtoul (buf, &e,10 ); +unsigned int n;int err; -if (!*buf || (*e && *e !='\n' )) -return -EINVAL ; + err =kstrtouint (buf,10 , &n); +if (err <0 ) +return err; err =mddev_lock (mddev);if (err)return err;
@@ -3593,12 +3597,12 @@ static int update_raid_disks(struct mddev *mddev, int raid_disks);static ssize_t raid_disks_store (struct mddev *mddev,const char *buf,size_t len) { -char *e; +unsigned int n;int err; -unsigned long n =simple_strtoul (buf, &e,10 ); -if (!*buf || (*e && *e !='\n' )) -return -EINVAL ; + err =kstrtouint (buf,10 , &n); +if (err <0 ) +return err; err =mddev_lock (mddev);if (err)
@@ -3645,12 +3649,12 @@ chunk_size_show(struct mddev *mddev, char *page)static ssize_t chunk_size_store (struct mddev *mddev,const char *buf,size_t len) { +unsigned long n;int err; -char *e; -unsigned long n =simple_strtoul (buf, &e,10 ); -if (!*buf || (*e && *e !='\n' )) -return -EINVAL ; + err =kstrtoul (buf,10 , &n); +if (err <0 ) +return err; err =mddev_lock (mddev);if (err)
@@ -3688,19 +3692,24 @@ resync_start_show(struct mddev *mddev, char *page)static ssize_t resync_start_store (struct mddev *mddev,const char *buf,size_t len) { +unsigned long long n;int err; -char *e; -unsigned long long n =simple_strtoull (buf, &e,10 ); + +if (cmd_match (buf,"none" )) + n = MaxSector; +else { + err =kstrtoull (buf,10 , &n); +if (err <0 ) +return err; +if (n != (sector_t )n) +return -EINVAL ; + } err =mddev_lock (mddev);if (err)return err;if (mddev->pers && !test_bit (MD_RECOVERY_FROZEN , &mddev->recovery)) err = -EBUSY ; -else if (cmd_match (buf,"none" )) - n = MaxSector; -else if (!*buf || (*e && *e !='\n' )) - err = -EINVAL ;if (!err) { mddev->recovery_cp = n;
@@ -3936,14 +3945,14 @@ max_corrected_read_errors_show(struct mddev *mddev, char *page) {static ssize_t max_corrected_read_errors_store (struct mddev *mddev,const char *buf,size_t len) { -char *e; -unsigned long n =simple_strtoul (buf, &e,10 ); +unsigned int n; +int rv; -if (*buf && (*e ==0 || *e =='\n' )) { -atomic_set (&mddev->max_corr_read_errors, n); -return len; - } -return -EINVAL ; + rv =kstrtouint (buf,10 , &n); +if (rv <0 ) +return rv; +atomic_set (&mddev->max_corr_read_errors, n); +return len; } static struct md_sysfs_entry max_corr_read_errors =
@@ -4297,15 +4306,18 @@ sync_min_show(struct mddev *mddev, char *page)static ssize_t sync_min_store (struct mddev *mddev,const char *buf,size_t len) { -int min; -char *e; +unsigned int min; +int rv; +if (strncmp (buf,"system" ,6 )==0 ) { - mddev->sync_speed_min =0 ; -return len; + min =0 ; + }else { + rv =kstrtouint (buf,10 , &min); +if (rv <0 ) +return rv; +if (min ==0 ) +return -EINVAL ; } - min =simple_strtoul (buf, &e,10 ); -if (buf == e || (*e && *e !='\n' ) || min <=0 ) -return -EINVAL ; mddev->sync_speed_min = min;return len; }
@@ -4323,15 +4335,18 @@ sync_max_show(struct mddev *mddev, char *page)static ssize_t sync_max_store (struct mddev *mddev,const char *buf,size_t len) { -int max; -char *e; +unsigned int max; +int rv; +if (strncmp (buf,"system" ,6 )==0 ) { - mddev->sync_speed_max =0 ; -return len; + max =0 ; + }else { + rv =kstrtouint (buf,10 , &max); +if (rv <0 ) +return rv; +if (max ==0 ) +return -EINVAL ; } - max =simple_strtoul (buf, &e,10 ); -if (buf == e || (*e && *e !='\n' ) || max <=0 ) -return -EINVAL ; mddev->sync_speed_max = max;return len; }
@@ -4514,12 +4529,13 @@ suspend_lo_show(struct mddev *mddev, char *page)static ssize_t suspend_lo_store (struct mddev *mddev,const char *buf,size_t len) { -char *e; -unsigned long long new =simple_strtoull (buf, &e,10 ); -unsigned long long old; +unsigned long long old, new;int err; -if (buf == e || (*e && *e !='\n' )) + err =kstrtoull (buf,10 , &new); +if (err <0 ) +return err; +if (new != (sector_t )new)return -EINVAL ; err =mddev_lock (mddev);
@@ -4556,12 +4572,13 @@ suspend_hi_show(struct mddev *mddev, char *page)static ssize_t suspend_hi_store (struct mddev *mddev,const char *buf,size_t len) { -char *e; -unsigned long long new =simple_strtoull (buf, &e,10 ); -unsigned long long old; +unsigned long long old, new;int err; -if (buf == e || (*e && *e !='\n' )) + err =kstrtoull (buf,10 , &new); +if (err <0 ) +return err; +if (new != (sector_t )new)return -EINVAL ; err =mddev_lock (mddev);
@@ -4603,11 +4620,13 @@ static ssize_t reshape_position_store(struct mddev *mddev, const char *buf, size_t len) { struct md_rdev *rdev; -char *e; +unsigned long long new;int err; -unsigned long long new =simple_strtoull (buf, &e,10 ); -if (buf == e || (*e && *e !='\n' )) + err =kstrtoull (buf,10 , &new); +if (err <0 ) +return err; +if (new != (sector_t )new)return -EINVAL ; err =mddev_lock (mddev);if (err)
@@ -9009,13 +9028,7 @@ static int get_ro(char *buffer, struct kernel_param *kp) }static int set_ro (const char *val,struct kernel_param *kp) { -char *e; -int num =simple_strtoul (val, &e,10 ); -if (*val && (*e =='\0' || *e =='\n' )) { - start_readonly = num; -return 0 ; - } -return -EINVAL ; +return kstrtouint (val,10 , (unsigned int *)&start_readonly); }module_param_call (start_ro, set_ro, get_ro,NULL ,S_IRUSR |S_IWUSR );
Quoted 280 lines · On Sat, 16 May 2015 14:02:38 +0300 Alexey Dobriyan <[email protected]> wrote:
Convert away from deprecated simple_strto*() functions.
Add "fit into
sector_t" checks.Signed-off-by Alexey Dobriyan <[email protected]>---
drivers/md/md.c | 149 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 81 insertions(+), 68 deletions(-)drivers/md/md.c +81
-69@@ -2630,13 +2630,14 @@ errors_show(struct md_rdev *rdev, char *page)static ssize_t errors_store (struct md_rdev *rdev,const char *buf,size_t len) { -char *e; -unsigned long n =simple_strtoul (buf, &e,10 ); -if (*buf && (*e ==0 || *e =='\n' )) { -atomic_set (&rdev->corrected_errors, n); -return len; - } -return -EINVAL ; +unsigned int n; +int rv; + + rv =kstrtouint (buf,10 , &n); +if (rv <0 ) +return rv; +atomic_set (&rdev->corrected_errors, n); +return len; }static struct rdev_sysfs_entry rdev_errors =__ATTR (errors,S_IRUGO |S_IWUSR , errors_show, errors_store);@@ -2653,13 +2654,16 @@ slot_show(struct md_rdev *rdev, char *page)static ssize_t slot_store (struct md_rdev *rdev,const char *buf,size_t len) { -char *e; +int slot;int err; -int slot =simple_strtoul (buf, &e,10 ); +if (strncmp (buf,"none" ,4 )==0 ) slot =-1 ; -else if (e==buf || (*e && *e!='\n' )) -return -EINVAL ; +else { + err =kstrtouint (buf,10 , (unsigned int *)&slot); +if (err <0 ) +return err; + }if (rdev->mddev->pers && slot ==-1 ) {/* Setting 'slot' on an active array requires also * updating the 'rd%d' link, and communicating @@ -3544,12 +3548,12 @@ layout_show(struct mddev *mddev, char *page)static ssize_t layout_store (struct mddev *mddev,const char *buf,size_t len) { -char *e; -unsigned long n =simple_strtoul (buf, &e,10 ); +unsigned int n;int err; -if (!*buf || (*e && *e !='\n' )) -return -EINVAL ; + err =kstrtouint (buf,10 , &n); +if (err <0 ) +return err; err =mddev_lock (mddev);if (err)return err;@@ -3593,12 +3597,12 @@ static int update_raid_disks(struct mddev *mddev, int raid_disks);static ssize_t raid_disks_store (struct mddev *mddev,const char *buf,size_t len) { -char *e; +unsigned int n;int err; -unsigned long n =simple_strtoul (buf, &e,10 ); -if (!*buf || (*e && *e !='\n' )) -return -EINVAL ; + err =kstrtouint (buf,10 , &n); +if (err <0 ) +return err; err =mddev_lock (mddev);if (err)@@ -3645,12 +3649,12 @@ chunk_size_show(struct mddev *mddev, char *page)static ssize_t chunk_size_store (struct mddev *mddev,const char *buf,size_t len) { +unsigned long n;int err; -char *e; -unsigned long n =simple_strtoul (buf, &e,10 ); -if (!*buf || (*e && *e !='\n' )) -return -EINVAL ; + err =kstrtoul (buf,10 , &n); +if (err <0 ) +return err; err =mddev_lock (mddev);if (err)@@ -3688,19 +3692,24 @@ resync_start_show(struct mddev *mddev, char *page)static ssize_t resync_start_store (struct mddev *mddev,const char *buf,size_t len) { +unsigned long long n;int err; -char *e; -unsigned long long n =simple_strtoull (buf, &e,10 ); + +if (cmd_match (buf,"none" )) + n = MaxSector; +else { + err =kstrtoull (buf,10 , &n); +if (err <0 ) +return err; +if (n != (sector_t )n) +return -EINVAL ; + } err =mddev_lock (mddev);if (err)return err;if (mddev->pers && !test_bit (MD_RECOVERY_FROZEN , &mddev->recovery)) err = -EBUSY ; -else if (cmd_match (buf,"none" )) - n = MaxSector; -else if (!*buf || (*e && *e !='\n' )) - err = -EINVAL ;if (!err) { mddev->recovery_cp = n;@@ -3936,14 +3945,14 @@ max_corrected_read_errors_show(struct mddev *mddev, char *page) {static ssize_t max_corrected_read_errors_store (struct mddev *mddev,const char *buf,size_t len) { -char *e; -unsigned long n =simple_strtoul (buf, &e,10 ); +unsigned int n; +int rv; -if (*buf && (*e ==0 || *e =='\n' )) { -atomic_set (&mddev->max_corr_read_errors, n); -return len; - } -return -EINVAL ; + rv =kstrtouint (buf,10 , &n); +if (rv <0 ) +return rv; +atomic_set (&mddev->max_corr_read_errors, n); +return len; } static struct md_sysfs_entry max_corr_read_errors =@@ -4297,15 +4306,18 @@ sync_min_show(struct mddev *mddev, char *page)static ssize_t sync_min_store (struct mddev *mddev,const char *buf,size_t len) { -int min; -char *e; +unsigned int min; +int rv; +if (strncmp (buf,"system" ,6 )==0 ) { - mddev->sync_speed_min =0 ; -return len; + min =0 ; + }else { + rv =kstrtouint (buf,10 , &min); +if (rv <0 ) +return rv; +if (min ==0 ) +return -EINVAL ; } - min =simple_strtoul (buf, &e,10 ); -if (buf == e || (*e && *e !='\n' ) || min <=0 ) -return -EINVAL ; mddev->sync_speed_min = min;return len; }@@ -4323,15 +4335,18 @@ sync_max_show(struct mddev *mddev, char *page)static ssize_t sync_max_store (struct mddev *mddev,const char *buf,size_t len) { -int max; -char *e; +unsigned int max; +int rv; +if (strncmp (buf,"system" ,6 )==0 ) { - mddev->sync_speed_max =0 ; -return len; + max =0 ; + }else { + rv =kstrtouint (buf,10 , &max); +if (rv <0 ) +return rv; +if (max ==0 ) +return -EINVAL ; } - max =simple_strtoul (buf, &e,10 ); -if (buf == e || (*e && *e !='\n' ) || max <=0 ) -return -EINVAL ; mddev->sync_speed_max = max;return len; }@@ -4514,12 +4529,13 @@ suspend_lo_show(struct mddev *mddev, char *page)static ssize_t suspend_lo_store (struct mddev *mddev,const char *buf,size_t len) { -char *e; -unsigned long long new =simple_strtoull (buf, &e,10 ); -unsigned long long old; +unsigned long long old, new;int err; -if (buf == e || (*e && *e !='\n' )) + err =kstrtoull (buf,10 , &new); +if (err <0 ) +return err; +if (new != (sector_t )new)return -EINVAL ; err =mddev_lock (mddev);@@ -4556,12 +4572,13 @@ suspend_hi_show(struct mddev *mddev, char *page)static ssize_t suspend_hi_store (struct mddev *mddev,const char *buf,size_t len) { -char *e; -unsigned long long new =simple_strtoull (buf, &e,10 ); -unsigned long long old; +unsigned long long old, new;int err; -if (buf == e || (*e && *e !='\n' )) + err =kstrtoull (buf,10 , &new); +if (err <0 ) +return err; +if (new != (sector_t )new)return -EINVAL ; err =mddev_lock (mddev);@@ -4603,11 +4620,13 @@ static ssize_t reshape_position_store(struct mddev *mddev, const char *buf, size_t len) { struct md_rdev *rdev; -char *e; +unsigned long long new;int err; -unsigned long long new =simple_strtoull (buf, &e,10 ); -if (buf == e || (*e && *e !='\n' )) + err =kstrtoull (buf,10 , &new); +if (err <0 ) +return err; +if (new != (sector_t )new)return -EINVAL ; err =mddev_lock (mddev);if (err)@@ -9009,13 +9028,7 @@ static int get_ro(char *buffer, struct kernel_param *kp) }static int set_ro (const char *val,struct kernel_param *kp) { -char *e; -int num =simple_strtoul (val, &e,10 ); -if (*val && (*e =='\0' || *e =='\n' )) { - start_readonly = num; -return 0 ; - } -return -EINVAL ; +return kstrtouint (val,10 , (unsigned int *)&start_readonly); }module_param_call (start_ro, set_ro, get_ro,NULL ,S_IRUSR |S_IWUSR ); --
Quoted 3 lines
To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Looks good - thanks.
I'll queue for the next merge window.
Thanks,
NeilBrown