Staging: iio/accel: Changed data type of val in store_measurement_mode to u8
authorAndreas Ruprecht <rupran@einserver.de>
Sun, 27 Nov 2011 22:17:42 +0000 (23:17 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 29 Nov 2011 01:12:06 +0000 (10:12 +0900)
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>
drivers/staging/iio/accel/sca3000_core.c

index 94bfe05e39f581ec3476736e48d0eddfab9f4913..12ee6f8d375a814a31ef6383d23a422e2b20bc45 100644 (file)
@@ -383,10 +383,10 @@ sca3000_store_measurement_mode(struct device *dev,
        struct sca3000_state *st = iio_priv(indio_dev);
        int ret;
        int mask = 0x03;
-       long val;
+       u8 val;
 
        mutex_lock(&st->lock);
-       ret = strict_strtol(buf, 10, &val);
+       ret = kstrtou8(buf, 10, &val);
        if (ret)
                goto error_ret;
        ret = sca3000_read_data_short(st, SCA3000_REG_ADDR_MODE, 1);