Staging: iio: signedness bug
Subsystems (4)
PATCH 1/2 Staging: iio: signedness bug
i2c_smbus_read_byte_data() returns an s32 type. We need to change "rate" to signed for the error handling to work.
Also I changed it to propogate the error code instead of just returning -EINVAL. Other error codes could be -EAGAIN for example.
Signed-off-by Dan Carpenter <[email protected]>
drivers/staging/iio/magnetometer/hmc5843.c +2 -2
@@ -385,11 +385,11 @@ static ssize_t show_sampling_frequency(struct device *dev,struct iio_dev *indio_dev =dev_get_drvdata (dev);struct i2c_client *client =to_i2c_client (indio_dev->dev.parent);struct iio_dev_attr *this_attr =to_iio_dev_attr (attr); -u32 rate; +s32 rate; rate =i2c_smbus_read_byte_data (client, this_attr->address);if (rate <0 ) -return -EINVAL ; +return rate; rate = (rate &RATE_BITMASK ) >>RATE_OFFSET ;return sprintf (buf,"%s\n" , regval_to_samp_freq[rate]); }
Quoted 7 lines · Dan Carpenter
i2c_smbus_read_byte_data()returns an s32 type. We need to change "rate" to signed for the error handling to work.Also I changed it to propogate the error code instead of just returning
-EINVAL. Other error codes could be-EAGAINfor example.Signed-off-by Dan Carpenter <[email protected]>
Acked-by Jonathan Cameron <[email protected]>
Thanks
Quoted 19 lines
drivers/staging/iio/magnetometer/hmc5843.c +2
-2@@ -385,11 +385,11 @@ static ssize_t show_sampling_frequency(struct device *dev,struct iio_dev *indio_dev =dev_get_drvdata (dev);struct i2c_client *client =to_i2c_client (indio_dev->dev.parent);struct iio_dev_attr *this_attr =to_iio_dev_attr (attr); -u32 rate; +s32 rate; rate =i2c_smbus_read_byte_data (client, this_attr->address);if (rate <0 ) -return -EINVAL ; +return rate; rate = (rate &RATE_BITMASK ) >>RATE_OFFSET ;return sprintf (buf,"%s\n" , regval_to_samp_freq[rate]); }