Commit 5faf98cb authored by Brian Masney's avatar Brian Masney Committed by Jonathan Cameron

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: default avatarBrian Masney <masneyb@onstation.org>
Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
parent 02819966
...@@ -277,10 +277,12 @@ static ssize_t in_illuminance_scale_available_show ...@@ -277,10 +277,12 @@ static ssize_t in_illuminance_scale_available_show
unsigned int i; unsigned int i;
int len = 0; int len = 0;
mutex_lock(&chip->lock);
for (i = 0; i < ARRAY_SIZE(isl29018_scales[chip->int_time]); ++i) for (i = 0; i < ARRAY_SIZE(isl29018_scales[chip->int_time]); ++i)
len += sprintf(buf + len, "%d.%06d ", len += sprintf(buf + len, "%d.%06d ",
isl29018_scales[chip->int_time][i].scale, isl29018_scales[chip->int_time][i].scale,
isl29018_scales[chip->int_time][i].uscale); isl29018_scales[chip->int_time][i].uscale);
mutex_unlock(&chip->lock);
buf[len - 1] = '\n'; buf[len - 1] = '\n';
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment