linux-stable/drivers/counter
William Breathitt Gray e589986ef0 counter: 104-quad-8: Fix race condition between FLAG and CNTR reads
commit 4aa3b75c74 upstream.

The Counter (CNTR) register is 24 bits wide, but we can have an
effective 25-bit count value by setting bit 24 to the XOR of the Borrow
flag and Carry flag. The flags can be read from the FLAG register, but a
race condition exists: the Borrow flag and Carry flag are instantaneous
and could change by the time the count value is read from the CNTR
register.

Since the race condition could result in an incorrect 25-bit count
value, remove support for 25-bit count values from this driver;
hard-coded maximum count values are replaced by a LS7267_CNTR_MAX define
for consistency and clarity.

Fixes: 28e5d3bb03 ("iio: 104-quad-8: Add IIO support for the ACCES 104-QUAD-8")
Cc: <stable@vger.kernel.org> # 6.1.x
Cc: <stable@vger.kernel.org> # 6.2.x
Link: https://lore.kernel.org/r/20230312231554.134858-1-william.gray@linaro.org/
Signed-off-by: William Breathitt Gray <william.gray@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-04-26 13:51:55 +02:00
..
104-quad-8.c counter: 104-quad-8: Fix race condition between FLAG and CNTR reads 2023-04-26 13:51:55 +02:00
counter-core.c counter: Internalize sysfs interface code 2023-04-20 12:13:55 +02:00
counter-sysfs.c counter: Internalize sysfs interface code 2023-04-20 12:13:55 +02:00
counter-sysfs.h counter: Internalize sysfs interface code 2023-04-20 12:13:55 +02:00
ftm-quaddec.c counter: Internalize sysfs interface code 2023-04-20 12:13:55 +02:00
intel-qep.c counter: Internalize sysfs interface code 2023-04-20 12:13:55 +02:00
interrupt-cnt.c counter: Internalize sysfs interface code 2023-04-20 12:13:55 +02:00
Kconfig counter: Add support for Intel Quadrature Encoder Peripheral 2021-06-03 18:24:14 +01:00
Makefile counter: Internalize sysfs interface code 2023-04-20 12:13:55 +02:00
microchip-tcb-capture.c counter: Internalize sysfs interface code 2023-04-20 12:13:55 +02:00
stm32-lptimer-cnt.c counter: Internalize sysfs interface code 2023-04-20 12:13:55 +02:00
stm32-timer-cnt.c counter: Internalize sysfs interface code 2023-04-20 12:13:55 +02:00
ti-eqep.c counter: Internalize sysfs interface code 2023-04-20 12:13:55 +02:00