From: Rodrigo Alencar via B4 Relay <devnull+rodrigo.alencar.analog.com@kernel.org>
To: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org,
Stefan Popa <stefan.popa@analog.com>,
Jonathan Cameron <jic23@cam.ac.uk>,
Greg Kroah-Hartman <gregkh@suse.de>,
Michael Auchter <michael.auchter@ni.com>,
Jonathan Cameron <jic23@kernel.org>
Cc: Lars-Peter Clausen <lars@metafoo.de>,
Michael Hennerich <Michael.Hennerich@analog.com>,
Jonathan Cameron <jic23@kernel.org>,
David Lechner <dlechner@baylibre.com>,
Andy Shevchenko <andy@kernel.org>,
Rodrigo Alencar <rodrigo.alencar@analog.com>,
Rodrigo Alencar <rdealencar@gmail.com>
Subject: [PATCH v4 05/13] iio: dac: ad5686: fix overlapping DMA buffers in I2C read
Date: Wed, 29 Apr 2026 14:07:35 +0100 [thread overview]
Message-ID: <20260429-ad5686-fixes-v4-5-bb8f1cbd68e1@analog.com> (raw)
In-Reply-To: <20260429-ad5686-fixes-v4-0-bb8f1cbd68e1@analog.com>
From: Rodrigo Alencar <rodrigo.alencar@analog.com>
The TX and RX buffers in ad5686_i2c_read() both reference data[0], causing
byte d8[1] to be shared between the TX buffer and the RX buffer. I2C
controller drivers that map all message buffers for DMA before initiating
the hardware transaction will map overlapping memory ranges with
conflicting DMA directions (DMA_TO_DEVICE and DMA_FROM_DEVICE). This issue
was reported by sashiko.
Fixes: 4177381b4401 ("iio:dac:ad5686: Add AD5671R/75R/94/94R/95R/96/96R support")
Signed-off-by: Rodrigo Alencar <rdealencar@gmail.com>
---
drivers/iio/dac/ad5696-i2c.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/dac/ad5696-i2c.c b/drivers/iio/dac/ad5696-i2c.c
index d3327bca0e07..d3b46496d67d 100644
--- a/drivers/iio/dac/ad5696-i2c.c
+++ b/drivers/iio/dac/ad5696-i2c.c
@@ -26,7 +26,7 @@ static int ad5686_i2c_read(struct ad5686_state *st, u8 addr)
.addr = i2c->addr,
.flags = i2c->flags | I2C_M_RD,
.len = 2,
- .buf = (char *)&st->data[0].d16,
+ .buf = (char *)&st->data[1].d16,
},
};
int ret;
@@ -39,7 +39,7 @@ static int ad5686_i2c_read(struct ad5686_state *st, u8 addr)
if (ret < 0)
return ret;
- return be16_to_cpu(st->data[0].d16);
+ return be16_to_cpu(st->data[1].d16);
}
static int ad5686_i2c_write(struct ad5686_state *st,
--
2.43.0
next prev parent reply other threads:[~2026-04-29 13:07 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-29 13:07 [PATCH v4 00/13] Fixes and cleanups for the AD5686 IIO driver Rodrigo Alencar via B4 Relay
2026-04-29 13:07 ` [PATCH v4 01/13] iio: dac: ad5686: fix ref bit initialization for single-channel parts Rodrigo Alencar via B4 Relay
2026-04-29 13:07 ` [PATCH v4 02/13] iio: dac: ad5686: fix input raw value check Rodrigo Alencar via B4 Relay
2026-04-29 13:07 ` [PATCH v4 03/13] iio: dac: ad5686: acquire lock when doing powerdown control Rodrigo Alencar via B4 Relay
2026-04-29 13:07 ` [PATCH v4 04/13] iio: dac: ad5686: fix powerdown control on dual-channel devices Rodrigo Alencar via B4 Relay
2026-04-29 14:03 ` Andy Shevchenko
2026-04-29 14:21 ` Rodrigo Alencar
2026-04-29 13:07 ` Rodrigo Alencar via B4 Relay [this message]
2026-04-29 13:12 ` [PATCH v4 05/13] iio: dac: ad5686: fix overlapping DMA buffers in I2C read Rodrigo Alencar
2026-04-29 13:50 ` Andy Shevchenko
2026-04-29 17:11 ` Jonathan Cameron
2026-04-29 14:07 ` Andy Shevchenko
2026-04-29 17:38 ` Jonathan Cameron
2026-04-29 13:07 ` [PATCH v4 06/13] iio: dac: ad5686: refactor include headers Rodrigo Alencar via B4 Relay
2026-04-29 14:09 ` Andy Shevchenko
2026-04-29 14:38 ` Joshua Crofts
2026-04-29 17:41 ` Jonathan Cameron
2026-04-29 18:19 ` Andy Shevchenko
2026-04-30 9:18 ` Joshua Crofts
2026-04-30 11:47 ` Andy Shevchenko
2026-05-05 10:55 ` Jonathan Cameron
2026-05-05 12:46 ` Andy Shevchenko
2026-04-29 13:07 ` [PATCH v4 07/13] iio: dac: ad5686: remove redundant register definition Rodrigo Alencar via B4 Relay
2026-04-29 13:07 ` [PATCH v4 08/13] iio: dac: ad5686: drop enum id Rodrigo Alencar via B4 Relay
2026-04-29 13:07 ` [PATCH v4 09/13] iio: dac: ad5686: add of_match table to the spi driver Rodrigo Alencar via B4 Relay
2026-04-29 13:07 ` [PATCH v4 10/13] iio: dac: ad5686: remove powerdown mask magic number Rodrigo Alencar via B4 Relay
2026-04-29 14:19 ` Andy Shevchenko
2026-04-29 13:07 ` [PATCH v4 11/13] iio: dac: ad5686: add control_sync() for single-channel devices Rodrigo Alencar via B4 Relay
2026-04-29 13:07 ` [PATCH v4 12/13] iio: dac: ad5686: cleanup doc header of local structs Rodrigo Alencar via B4 Relay
2026-04-29 13:07 ` [PATCH v4 13/13] iio: dac: ad5686: create bus ops struct Rodrigo Alencar via B4 Relay
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260429-ad5686-fixes-v4-5-bb8f1cbd68e1@analog.com \
--to=devnull+rodrigo.alencar.analog.com@kernel.org \
--cc=Michael.Hennerich@analog.com \
--cc=andy@kernel.org \
--cc=dlechner@baylibre.com \
--cc=gregkh@suse.de \
--cc=jic23@cam.ac.uk \
--cc=jic23@kernel.org \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=michael.auchter@ni.com \
--cc=rdealencar@gmail.com \
--cc=rodrigo.alencar@analog.com \
--cc=stefan.popa@analog.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox