iio: tsl2583: Fix division by a zero lux_val
The lux_val returned from tsl2583_get_lux can potentially be zero,
so check for this to avoid a division by zero and an overflowed
gain_trim_val.
Fixes clang scan-build warning:
drivers/iio/light/tsl2583.c:345:40: warning: Either the
condition 'lux_val<0' is redundant or there is division
by zero at line 345. [zerodivcond]
Fixes: ac4f6eee8f ("staging: iio: TAOS tsl258x: Device driver")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
			
			
This commit is contained in:
		
							parent
							
								
									af0670b0bf
								
							
						
					
					
						commit
						af0e1871d7
					
				| @ -341,6 +341,14 @@ static int tsl2583_als_calibrate(struct iio_dev *indio_dev) | ||||
| 		return lux_val; | ||||
| 	} | ||||
| 
 | ||||
| 	/* Avoid division by zero of lux_value later on */ | ||||
| 	if (lux_val == 0) { | ||||
| 		dev_err(&chip->client->dev, | ||||
| 			"%s: lux_val of 0 will produce out of range trim_value\n", | ||||
| 			__func__); | ||||
| 		return -ENODATA; | ||||
| 	} | ||||
| 
 | ||||
| 	gain_trim_val = (unsigned int)(((chip->als_settings.als_cal_target) | ||||
| 			* chip->als_settings.als_gain_trim) / lux_val); | ||||
| 	if ((gain_trim_val < 250) || (gain_trim_val > 4000)) { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user