diff options
Diffstat (limited to 'drivers/misc/bh1770glc.c')
| -rw-r--r-- | drivers/misc/bh1770glc.c | 59 | 
1 files changed, 38 insertions, 21 deletions
diff --git a/drivers/misc/bh1770glc.c b/drivers/misc/bh1770glc.c index f4975f7d0d5..99a04686e45 100644 --- a/drivers/misc/bh1770glc.c +++ b/drivers/misc/bh1770glc.c @@ -651,8 +651,9 @@ static ssize_t bh1770_power_state_store(struct device *dev,  	unsigned long value;  	ssize_t ret; -	if (strict_strtoul(buf, 0, &value)) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &value); +	if (ret) +		return ret;  	mutex_lock(&chip->mutex);  	if (value) { @@ -726,9 +727,11 @@ static ssize_t bh1770_prox_enable_store(struct device *dev,  {  	struct bh1770_chip *chip =  dev_get_drvdata(dev);  	unsigned long value; +	int ret; -	if (strict_strtoul(buf, 0, &value)) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &value); +	if (ret) +		return ret;  	mutex_lock(&chip->mutex);  	/* Assume no proximity. Sensor will tell real state soon */ @@ -824,9 +827,11 @@ static ssize_t bh1770_set_prox_rate_above(struct device *dev,  {  	struct bh1770_chip *chip =  dev_get_drvdata(dev);  	unsigned long value; +	int ret; -	if (strict_strtoul(buf, 0, &value)) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &value); +	if (ret) +		return ret;  	mutex_lock(&chip->mutex);  	chip->prox_rate_threshold = bh1770_prox_rate_validate(value); @@ -840,9 +845,11 @@ static ssize_t bh1770_set_prox_rate_below(struct device *dev,  {  	struct bh1770_chip *chip =  dev_get_drvdata(dev);  	unsigned long value; +	int ret; -	if (strict_strtoul(buf, 0, &value)) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &value); +	if (ret) +		return ret;  	mutex_lock(&chip->mutex);  	chip->prox_rate = bh1770_prox_rate_validate(value); @@ -865,8 +872,10 @@ static ssize_t bh1770_set_prox_thres(struct device *dev,  	unsigned long value;  	int ret; -	if (strict_strtoul(buf, 0, &value)) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &value); +	if (ret) +		return ret; +  	if (value > BH1770_PROX_RANGE)  		return -EINVAL; @@ -893,9 +902,11 @@ static ssize_t bh1770_prox_persistence_store(struct device *dev,  {  	struct bh1770_chip *chip = dev_get_drvdata(dev);  	unsigned long value; +	int ret; -	if (strict_strtoul(buf, 0, &value)) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &value); +	if (ret) +		return ret;  	if (value > BH1770_PROX_MAX_PERSISTENCE)  		return -EINVAL; @@ -918,9 +929,11 @@ static ssize_t bh1770_prox_abs_thres_store(struct device *dev,  {  	struct bh1770_chip *chip = dev_get_drvdata(dev);  	unsigned long value; +	int ret; -	if (strict_strtoul(buf, 0, &value)) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &value); +	if (ret) +		return ret;  	if (value > BH1770_PROX_RANGE)  		return -EINVAL; @@ -963,9 +976,11 @@ static ssize_t bh1770_lux_calib_store(struct device *dev,  	unsigned long value;  	u32 old_calib;  	u32 new_corr; +	int ret; -	if (strict_strtoul(buf, 0, &value)) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &value); +	if (ret) +		return ret;  	mutex_lock(&chip->mutex);  	old_calib = chip->lux_calib; @@ -1012,8 +1027,9 @@ static ssize_t bh1770_set_lux_rate(struct device *dev,  	unsigned long rate_hz;  	int ret, i; -	if (strict_strtoul(buf, 0, &rate_hz)) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &rate_hz); +	if (ret) +		return ret;  	for (i = 0; i < ARRAY_SIZE(lux_rates_hz) - 1; i++)  		if (rate_hz >= lux_rates_hz[i]) @@ -1047,11 +1063,12 @@ static ssize_t bh1770_get_lux_thresh_below(struct device *dev,  static ssize_t bh1770_set_lux_thresh(struct bh1770_chip *chip, u16 *target,  				const char *buf)  { -	int ret = 0;  	unsigned long thresh; +	int ret; -	if (strict_strtoul(buf, 0, &thresh)) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &thresh); +	if (ret) +		return ret;  	if (thresh > BH1770_LUX_RANGE)  		return -EINVAL;  | 
