From: Dan Carpenter Date: Thu, 11 Nov 2010 22:05:11 +0000 (-0800) Subject: misc/isl29020: signedness bug in als_sensing_range_store() X-Git-Tag: firefly_0821_release~7613^2~3486 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=90482e45e4a39ee10b66436c2b3d5d4d88c2f73c;p=firefly-linux-kernel-4.4.55.git 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 Signed-off-by: Alan Cox Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/misc/isl29020.c b/drivers/misc/isl29020.c index 34fe835921c4..ca47e6285075 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;