diff options
Diffstat (limited to 'mm/backing-dev.c')
| -rw-r--r-- | mm/backing-dev.c | 50 | 
1 files changed, 26 insertions, 24 deletions
diff --git a/mm/backing-dev.c b/mm/backing-dev.c index b41823cc05e..d3ca2b3ee17 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c @@ -158,16 +158,16 @@ static ssize_t read_ahead_kb_store(struct device *dev,  				  const char *buf, size_t count)  {  	struct backing_dev_info *bdi = dev_get_drvdata(dev); -	char *end;  	unsigned long read_ahead_kb; -	ssize_t ret = -EINVAL; +	ssize_t ret; -	read_ahead_kb = simple_strtoul(buf, &end, 10); -	if (*buf && (end[0] == '\0' || (end[0] == '\n' && end[1] == '\0'))) { -		bdi->ra_pages = read_ahead_kb >> (PAGE_SHIFT - 10); -		ret = count; -	} -	return ret; +	ret = kstrtoul(buf, 10, &read_ahead_kb); +	if (ret < 0) +		return ret; + +	bdi->ra_pages = read_ahead_kb >> (PAGE_SHIFT - 10); + +	return count;  }  #define K(pages) ((pages) << (PAGE_SHIFT - 10)) @@ -187,16 +187,17 @@ static ssize_t min_ratio_store(struct device *dev,  		struct device_attribute *attr, const char *buf, size_t count)  {  	struct backing_dev_info *bdi = dev_get_drvdata(dev); -	char *end;  	unsigned int ratio; -	ssize_t ret = -EINVAL; +	ssize_t ret; + +	ret = kstrtouint(buf, 10, &ratio); +	if (ret < 0) +		return ret; + +	ret = bdi_set_min_ratio(bdi, ratio); +	if (!ret) +		ret = count; -	ratio = simple_strtoul(buf, &end, 10); -	if (*buf && (end[0] == '\0' || (end[0] == '\n' && end[1] == '\0'))) { -		ret = bdi_set_min_ratio(bdi, ratio); -		if (!ret) -			ret = count; -	}  	return ret;  }  BDI_SHOW(min_ratio, bdi->min_ratio) @@ -205,16 +206,17 @@ static ssize_t max_ratio_store(struct device *dev,  		struct device_attribute *attr, const char *buf, size_t count)  {  	struct backing_dev_info *bdi = dev_get_drvdata(dev); -	char *end;  	unsigned int ratio; -	ssize_t ret = -EINVAL; +	ssize_t ret; + +	ret = kstrtouint(buf, 10, &ratio); +	if (ret < 0) +		return ret; + +	ret = bdi_set_max_ratio(bdi, ratio); +	if (!ret) +		ret = count; -	ratio = simple_strtoul(buf, &end, 10); -	if (*buf && (end[0] == '\0' || (end[0] == '\n' && end[1] == '\0'))) { -		ret = bdi_set_max_ratio(bdi, ratio); -		if (!ret) -			ret = count; -	}  	return ret;  }  BDI_SHOW(max_ratio, bdi->max_ratio)  |