linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/11] IIO: Alignment fixes part 3 - __aligned(8) used to ensure alignment
@ 2021-05-01 17:13 Jonathan Cameron
  2021-05-01 17:13 ` [PATCH 01/11] iio: adc: at91-sama5d2: Fix buffer alignment in iio_push_to_buffers_with_timestamp() Jonathan Cameron
                   ` (11 more replies)
  0 siblings, 12 replies; 23+ messages in thread
From: Jonathan Cameron @ 2021-05-01 17:13 UTC (permalink / raw)
  To: linux-iio
  Cc: Jonathan Cameron, Eugen Hristev, Andreas Klinger, Matt Ranostay,
	Gwendal Grignou, Song Qiang, Mathieu Othacehe,
	Parthiban Nallathambi

From: Jonathan Cameron <Jonathan.Cameron@huawei.com>

I finally got around to do a manual audit of all the calls to
iio_push_to_buffers_with_timestamp() which has the somewhat odd requirements
of:
1. 8 byte alignment of the provided buffer.
2. space for an 8 byte naturally aligned timestamp to be inserted at the
   end.

Unfortunately there were rather a lot of these left, but time to bite the bullet
and clean them up.

As discussed previous in
https://lore.kernel.org/linux-iio/20200920112742.170751-1-jic23@kernel.org/
it is not easy to fix the alignment issue without requiring a bounce buffer
(see part 4 of the alignment fixes for a proposal for that where it is
absolutely necessary).

Part 3 contains the cases where the struct approach in part 2 did not seem
appropriate.  Normally there are two possible reasons for this.
1.  Would have required an additional memset operation to avoid any
    possibility of leaking kernel data.
2.  The location of the timestamp may depend on the channels enabled.
    This normally happens when the max sizeof channels is greater than
    8 bytes.

Once all cases are fixes, I'll take a look at hardening against any
accidental reintroductions. Note that on many platforms and usecases the
bug in question will never occur.

Cc: Eugen Hristev <eugen.hristev@microchip.com>
Cc: Andreas Klinger <ak@it-klinger.d>
Cc: Matt Ranostay <matt.ranostay@konsulko.com>
Cc: Gwendal Grignou <gwendal@chromium.org>
Cc: Song Qiang <songqiang1304521@gmail.com>
Cc: Mathieu Othacehe <m.othacehe@gmail.com>
Cc: Parthiban Nallathambi <pn@denx.de>

Jonathan Cameron (11):
  iio: adc: at91-sama5d2: Fix buffer alignment in
    iio_push_to_buffers_with_timestamp()
  iio: adc: hx711: Fix buffer alignment in
    iio_push_to_buffers_with_timestamp()
  iio: adc: mxs-lradc: Fix buffer alignment in
    iio_push_to_buffers_with_timestamp()
  iio: adc: ti-ads8688: Fix alignment of buffer in
    iio_push_to_buffers_with_timestamp()
  iio: chemical: atlas: Fix buffer alignment in
    iio_push_to_buffers_with_timestamp()
  iio: cros_ec_sensors: Fix alignment of buffer in
    iio_push_to_buffers_with_timestamp()
  iio: potentiostat: lmp91000: Fix alignment of buffer in
    iio_push_to_buffers_with_timestamp()
  iio: magn: rm3100: Fix alignment of buffer in
    iio_push_to_buffers_with_timestamp()
  iio: light: vcnl4000: Fix buffer alignment in
    iio_push_to_buffers_with_timestamp()
  iio: light: vcnl4035: Fix buffer alignment in
    iio_push_to_buffers_with_timestamp()
  iio: prox: isl29501: Fix buffer alignment in
    iio_push_to_buffers_with_timestamp()

 drivers/iio/adc/at91-sama5d2_adc.c              | 3 ++-
 drivers/iio/adc/hx711.c                         | 4 ++--
 drivers/iio/adc/mxs-lradc-adc.c                 | 3 ++-
 drivers/iio/adc/ti-ads8688.c                    | 3 ++-
 drivers/iio/chemical/atlas-sensor.c             | 4 ++--
 drivers/iio/light/vcnl4000.c                    | 2 +-
 drivers/iio/light/vcnl4035.c                    | 3 ++-
 drivers/iio/magnetometer/rm3100-core.c          | 3 ++-
 drivers/iio/potentiostat/lmp91000.c             | 4 ++--
 drivers/iio/proximity/isl29501.c                | 2 +-
 include/linux/iio/common/cros_ec_sensors_core.h | 2 +-
 11 files changed, 19 insertions(+), 14 deletions(-)

-- 
2.31.1


^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2021-05-27  8:50 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-01 17:13 [PATCH 00/11] IIO: Alignment fixes part 3 - __aligned(8) used to ensure alignment Jonathan Cameron
2021-05-01 17:13 ` [PATCH 01/11] iio: adc: at91-sama5d2: Fix buffer alignment in iio_push_to_buffers_with_timestamp() Jonathan Cameron
2021-05-26 17:23   ` Eugen.Hristev
2021-05-27  8:48     ` Jonathan Cameron
2021-05-01 17:13 ` [PATCH 02/11] iio: adc: hx711: " Jonathan Cameron
2021-05-01 17:13 ` [PATCH 03/11] iio: adc: mxs-lradc: " Jonathan Cameron
2021-05-01 17:13 ` [PATCH 04/11] iio: adc: ti-ads8688: Fix alignment of buffer " Jonathan Cameron
2021-05-01 17:13 ` [PATCH 05/11] iio: chemical: atlas: Fix buffer alignment " Jonathan Cameron
2021-05-06  6:44   ` Matt Ranostay
2021-05-13 17:59     ` Jonathan Cameron
2021-05-01 17:13 ` [PATCH 06/11] iio: cros_ec_sensors: Fix alignment of buffer " Jonathan Cameron
2021-05-01 23:58   ` Gwendal Grignou
2021-05-13 18:03     ` Jonathan Cameron
2021-05-01 17:13 ` [PATCH 07/11] iio: potentiostat: lmp91000: " Jonathan Cameron
2021-05-06  6:44   ` Matt Ranostay
2021-05-13 18:04     ` Jonathan Cameron
2021-05-01 17:13 ` [PATCH 08/11] iio: magn: rm3100: " Jonathan Cameron
2021-05-01 17:13 ` [PATCH 09/11] iio: light: vcnl4000: Fix buffer alignment " Jonathan Cameron
2021-05-01 17:13 ` [PATCH 10/11] iio: light: vcnl4035: " Jonathan Cameron
2021-05-01 17:13 ` [PATCH 11/11] iio: prox: isl29501: " Jonathan Cameron
2021-05-13 17:58 ` [PATCH 00/11] IIO: Alignment fixes part 3 - __aligned(8) used to ensure alignment Jonathan Cameron
2021-05-26 17:09   ` Jonathan Cameron
2021-05-26 17:17     ` Andy Shevchenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).