TencentOS-kernel/drivers/iio
Jonathan Cameron 7bc048f57b iio:adc:ti-ads124s08: Fix alignment and data leak issues.
commit 1e405bc2512f80a903ddd6ba8740cee885238d7f upstream.

One of a class of bugs pointed out by Lars in a recent review.
iio_push_to_buffers_with_timestamp() assumes the buffer used is aligned
to the size of the timestamp (8 bytes).  This is not guaranteed in
this driver which uses an array of smaller elements on the stack.
As Lars also noted this anti pattern can involve a leak of data to
userspace and that indeed can happen here.  We close both issues by
moving to a suitable structure in the iio_priv() data with alignment
explicitly requested.  This data is allocated with kzalloc() so no
data can leak apart from previous readings.

In this driver the timestamp can end up in various different locations
depending on what other channels are enabled.  As a result, we don't
use a structure to specify it's position as that would be misleading.

Fixes: e717f8c6dfec ("iio: adc: Add the TI ads124s08 ADC code")
Reported-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
Cc: Dan Murphy <dmurphy@ti.com>
Cc: <Stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20200920112742.170751-9-jic23@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-03-16 16:43:43 +08:00
..
accel iio: accel: kxcjk1013: Add support for KIOX010A ACPI DSM for setting tablet-mode 2021-03-16 16:41:28 +08:00
adc iio:adc:ti-ads124s08: Fix alignment and data leak issues. 2021-03-16 16:43:43 +08:00
afe Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
amplifiers Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
buffer Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
chemical iio:chemical:ccs811: Fix timestamp alignment and prevent data leak. 2021-03-16 16:36:02 +08:00
common iio: cros_ec: Set Gyroscope default frequency to 25Hz 2021-03-16 16:36:00 +08:00
dac iio: dac: ad5592r: fix unbalanced mutex unlocks in ad5592r_read_raw() 2021-03-16 16:34:03 +08:00
dummy Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
frequency Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
gyro iio:gyro:itg3200: Fix timestamp alignment and prevent data leak. 2021-03-16 16:40:05 +08:00
health iio:health:afe4404 Fix timestamp alignment and prevent data leak. 2021-03-16 16:31:57 +08:00
humidity iio:humidity:hts221 Fix alignment and data leak issues 2021-03-16 16:31:50 +08:00
imu iio:imu:bmi160: Fix too large a buffer. 2021-03-16 16:43:43 +08:00
light iio:light:st_uvis25: Fix timestamp alignment and prevent data leak. 2021-03-16 16:43:42 +08:00
magnetometer iio:magnetometer:mag3110: Fix alignment and data leak issues. 2021-03-16 16:43:42 +08:00
multiplexer Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
orientation Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
potentiometer Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
potentiostat Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
pressure iio:pressure:mpl3115: Force alignment of buffer 2021-03-16 16:43:43 +08:00
proximity iio:proximity:mb1232: Fix timestamp alignment and prevent data leak. 2021-03-16 16:36:01 +08:00
resolver Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
temperature Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
trigger iio: hrtimer-trigger: Mark hrtimer to expire in hard interrupt context 2021-03-16 16:43:01 +08:00
Kconfig Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
Makefile Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
iio_core.h Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
iio_core_trigger.h Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
industrialio-buffer.c iio: buffer: Fix demux update 2021-03-16 16:43:42 +08:00
industrialio-configfs.c Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
industrialio-core.c iio: core: add missing IIO_MOD_H2/ETHANOL string identifiers 2021-03-16 16:31:50 +08:00
industrialio-event.c Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
industrialio-sw-device.c Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
industrialio-sw-trigger.c Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
industrialio-trigger.c Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
industrialio-triggered-event.c Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
inkern.c Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00