staging: iio: isl29018: fixed race condition in in_illuminance_scale_available_show()
in_illuminance_scale_available_show() references the isl29018_chip->int_time variable in three places inside a for loop. The value of the int_time variable can be updated by the isl29018_set_integration_time() function, which is called by the isl29018_write_raw() function. isl29018_write_raw() locks a mutex specific to this driver when the integration time variable is updated. Signed-off-by: Brian Masney <masneyb@onstation.org> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
parent
028199660d
commit
5faf98cb31
|
@ -277,10 +277,12 @@ static ssize_t in_illuminance_scale_available_show
|
|||
unsigned int i;
|
||||
int len = 0;
|
||||
|
||||
mutex_lock(&chip->lock);
|
||||
for (i = 0; i < ARRAY_SIZE(isl29018_scales[chip->int_time]); ++i)
|
||||
len += sprintf(buf + len, "%d.%06d ",
|
||||
isl29018_scales[chip->int_time][i].scale,
|
||||
isl29018_scales[chip->int_time][i].uscale);
|
||||
mutex_unlock(&chip->lock);
|
||||
|
||||
buf[len - 1] = '\n';
|
||||
|
||||
|
|
Loading…
Reference in New Issue