diff options
author | Andreas Ruprecht <rupran@einserver.de> | 2011-11-27 17:17:42 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-11-28 20:12:06 -0500 |
commit | 3b724ca14565747926c23af1fa1afb1848c3f448 (patch) | |
tree | b9e2fd6b22e5ec186badbfb9f3d8df23a295cd80 /drivers | |
parent | 359f9caa4df27ca0546a787d086f4c06306300b6 (diff) |
Staging: iio/accel: Changed data type of val in store_measurement_mode to u8
The code in sca3000_store_measurement_mode() uses the variable val to
do bitwise operations with an int mask and or-s it into st->rx[0] which
is an entry in a u8 array (see sca3000.h).
This means up to now values larger than a u8 were silently ignored and
just the lower 8 bits counted into the value that was written into
st->rx[0]. This code will return -ERANGE if the value in buf was too
large to fit into a u8.
Signed-off-by: Andreas Ruprecht <rupran@einserver.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/staging/iio/accel/sca3000_core.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/staging/iio/accel/sca3000_core.c b/drivers/staging/iio/accel/sca3000_core.c index 94bfe05e39f..12ee6f8d375 100644 --- a/drivers/staging/iio/accel/sca3000_core.c +++ b/drivers/staging/iio/accel/sca3000_core.c | |||
@@ -383,10 +383,10 @@ sca3000_store_measurement_mode(struct device *dev, | |||
383 | struct sca3000_state *st = iio_priv(indio_dev); | 383 | struct sca3000_state *st = iio_priv(indio_dev); |
384 | int ret; | 384 | int ret; |
385 | int mask = 0x03; | 385 | int mask = 0x03; |
386 | long val; | 386 | u8 val; |
387 | 387 | ||
388 | mutex_lock(&st->lock); | 388 | mutex_lock(&st->lock); |
389 | ret = strict_strtol(buf, 10, &val); | 389 | ret = kstrtou8(buf, 10, &val); |
390 | if (ret) | 390 | if (ret) |
391 | goto error_ret; | 391 | goto error_ret; |
392 | ret = sca3000_read_data_short(st, SCA3000_REG_ADDR_MODE, 1); | 392 | ret = sca3000_read_data_short(st, SCA3000_REG_ADDR_MODE, 1); |