diff options
| author | Dan Carpenter <error27@gmail.com> | 2010-11-11 14:05:11 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-11-12 07:55:31 -0800 |
| commit | 90482e45e4a39ee10b66436c2b3d5d4d88c2f73c (patch) | |
| tree | ca1266c43d6df4e88d4303e87da55c238054cb97 | |
| parent | 43b3a0c732776746f53d8ed2ba659583fc1692aa (diff) | |
| download | olio-linux-3.10-90482e45e4a39ee10b66436c2b3d5d4d88c2f73c.tar.xz olio-linux-3.10-90482e45e4a39ee10b66436c2b3d5d4d88c2f73c.zip | |
misc/isl29020: signedness bug in als_sensing_range_store()
"ret_val" is supposed to be signed here or the error handling breaks.
Also we should check the return value from i2c_smbus_read_byte_data().
Signed-off-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
| -rw-r--r-- | drivers/misc/isl29020.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/misc/isl29020.c b/drivers/misc/isl29020.c index 34fe835921c..ca47e628507 100644 --- a/drivers/misc/isl29020.c +++ b/drivers/misc/isl29020.c @@ -87,7 +87,7 @@ static ssize_t als_sensing_range_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct i2c_client *client = to_i2c_client(dev); - unsigned int ret_val; + int ret_val; unsigned long val; if (strict_strtoul(buf, 10, &val)) @@ -106,6 +106,8 @@ static ssize_t als_sensing_range_store(struct device *dev, val = 4; ret_val = i2c_smbus_read_byte_data(client, 0x00); + if (ret_val < 0) + return ret_val; ret_val &= 0xFC; /*reset the bit before setting them */ ret_val |= val - 1; |