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:
Brian Masney 2016-09-26 20:20:18 -04:00 committed by Jonathan Cameron
parent 028199660d
commit 5faf98cb31
1 changed files with 2 additions and 0 deletions

View File

@ -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';