Message ID | 20191008141537.31512-1-alexandru.ardelean@analog.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] iio: imu: adis16480: make sure provided frequency is positive | expand |
On Tue, 8 Oct 2019 17:15:37 +0300 Alexandru Ardelean <alexandru.ardelean@analog.com> wrote: > It could happen that either `val` or `val2` [provided from userspace] is > negative. In that case the computed frequency could get a weird value. > > Fix this by checking that neither of the 2 variables is negative, and check > that the computed result is not-zero. > > Fixes: e4f959390178 ("iio: imu: adis16480 switch sampling frequency attr to core support") > Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> applied to the fixes-togreg branch of iio.git and marked for stable. Thanks, Jonathan > --- > > Changelog v1 -> v2: > * also check that val & val2 are not negative (in addition to checking if > 't' is zero > > drivers/iio/imu/adis16480.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/iio/imu/adis16480.c b/drivers/iio/imu/adis16480.c > index 01dae50e985b..0bec1fea823d 100644 > --- a/drivers/iio/imu/adis16480.c > +++ b/drivers/iio/imu/adis16480.c > @@ -317,8 +317,11 @@ static int adis16480_set_freq(struct iio_dev *indio_dev, int val, int val2) > struct adis16480 *st = iio_priv(indio_dev); > unsigned int t, reg; > > + if (val < 0 || val2 < 0) > + return -EINVAL; > + > t = val * 1000 + val2 / 1000; > - if (t <= 0) > + if (t == 0) > return -EINVAL; > > /*
diff --git a/drivers/iio/imu/adis16480.c b/drivers/iio/imu/adis16480.c index 01dae50e985b..0bec1fea823d 100644 --- a/drivers/iio/imu/adis16480.c +++ b/drivers/iio/imu/adis16480.c @@ -317,8 +317,11 @@ static int adis16480_set_freq(struct iio_dev *indio_dev, int val, int val2) struct adis16480 *st = iio_priv(indio_dev); unsigned int t, reg; + if (val < 0 || val2 < 0) + return -EINVAL; + t = val * 1000 + val2 / 1000; - if (t <= 0) + if (t == 0) return -EINVAL; /*
It could happen that either `val` or `val2` [provided from userspace] is negative. In that case the computed frequency could get a weird value. Fix this by checking that neither of the 2 variables is negative, and check that the computed result is not-zero. Fixes: e4f959390178 ("iio: imu: adis16480 switch sampling frequency attr to core support") Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> --- Changelog v1 -> v2: * also check that val & val2 are not negative (in addition to checking if 't' is zero drivers/iio/imu/adis16480.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)