mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 10:09:10 +02:00
iio: light: si1133: reset counter to prevent race condition
Sashiko reported a potential race condition happening when the driver
returns an errno after a timeout in the si1133_command() function. The
premature exit causes the hardware and software counters to become out
of sync by not updating data->rsp_seq, therefore the internal hardware
counter keeps incrementing.
Fix this by adding a call to si1133_cmd_reset_counter() before returning
from timeout.
Fixes: e01e7eaf37 ("iio: light: introduce si1133")
Reported-by: sashiko-bot <sashiko-bot@kernel.org>
Closes: https://sashiko.dev/#/message/20260428-si1133-checkup-v2-5-70ad14bfefe2%40gmail.com
Assisted-by: gemini:gemini-3.1-pro-preview
Signed-off-by: Joshua Crofts <joshua.crofts1@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
parent
ccf300c36b
commit
0a5f45ed23
|
|
@ -427,6 +427,11 @@ static int si1133_command(struct si1133_data *data, u8 cmd)
|
|||
dev_warn(dev,
|
||||
"Failed to read command 0x%02x, ret=%d\n",
|
||||
cmd, err);
|
||||
/*
|
||||
* Reset counter on err to prevent software and hardware
|
||||
* counters being out of sync.
|
||||
*/
|
||||
si1133_cmd_reset_counter(data);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user