From: Andreas Ruprecht Date: Tue, 29 Nov 2011 10:43:28 +0000 (+0100) Subject: Staging: iio/adc: strict_strtoul was used with a long type variable X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=6d3ff1cc99eb869af040e34c0bbe3035cc5c203b;p=mv-sheeva.git Staging: iio/adc: strict_strtoul was used with a long type variable The function ad7280_store_balance_timer() parses data from a char* buffer into a long variable, but uses the the function strict_strtoul which expects a pointer to an unsigned long variable as its third parameter. As Dan Carpenter mentioned, the values are capped a few lines later, but a check if val is negative is missing. Now this function will return -ERANGE if there is a representation of a negative number in buf. Additionally the checkpatch.pl considers strict_strtoul as obsolete. I replaced its call with the suggested kstrtoul. Signed-off-by: Andreas Ruprecht Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/iio/adc/ad7280a.c b/drivers/staging/iio/adc/ad7280a.c index f70bff24785..3fac9b1fc66 100644 --- a/drivers/staging/iio/adc/ad7280a.c +++ b/drivers/staging/iio/adc/ad7280a.c @@ -456,10 +456,10 @@ static ssize_t ad7280_store_balance_timer(struct device *dev, struct iio_dev *indio_dev = dev_get_drvdata(dev); struct ad7280_state *st = iio_priv(indio_dev); struct iio_dev_attr *this_attr = to_iio_dev_attr(attr); - long val; + unsigned long val; int ret; - ret = strict_strtoul(buf, 10, &val); + ret = kstrtoul(buf, 10, &val); if (ret) return ret;