From: "Manush Prajwal" <manushprajwal555@gmail.com>
To: sai.krishna.potthuri@amd.com, conall.ogriofa@amd.com, jic23@kernel.org
Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org,
dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org
Subject: [PATCH] iio: adc: xilinx-ams: fix OOB read in ams_get_ext_chan()
Date: 6 Sep 2026 16:35:18 +0530 [thread overview]
Message-ID: <6a9d48ef.4987c784.3608f9.714a@mx.google.com> (raw)
The PL external-channel "reg" property is only checked against its
upper bound (AMS_PL_MAX_EXT_CHANNEL + 30 == 50), matching the
'maximum: 50' constraint in the devicetree binding
(Documentation/devicetree/bindings/iio/adc/xlnx,zynqmp-ams.yaml), but
the binding also documents 'minimum: 20' which the driver never
enforces at runtime.
ext_chan is computed as 'reg + AMS_PL_MAX_FIXED_CHANNEL - 30' in
unsigned arithmetic. For any reg < 20 (e.g. a hand-written or
malformed devicetree overlay with reg = <0>), this underflows to a
huge unsigned value, and the following
memcpy(chan, &ams_pl_channels[ext_chan], sizeof(*channels));
reads far outside the 31-entry ams_pl_channels[] array.
Reject any reg value that would produce an out-of-range ext_chan
before it is used to index ams_pl_channels[], instead of relying only
on the upper-bound check.
Signed-off-by: Manush Prajwal <manushprajwal555@gmail.com>
---
drivers/iio/adc/xilinx-ams.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/iio/adc/xilinx-ams.c b/drivers/iio/adc/xilinx-ams.c
index 158e6133a..cd778d053 100644
--- a/drivers/iio/adc/xilinx-ams.c
+++ b/drivers/iio/adc/xilinx-ams.c
@@ -1154,8 +1154,11 @@ static int ams_get_ext_chan(struct fwnode_handle *chan_node,
if (ret || reg > AMS_PL_MAX_EXT_CHANNEL + 30)
continue;
- chan = &channels[num_channels];
ext_chan = reg + AMS_PL_MAX_FIXED_CHANNEL - 30;
+ if (ext_chan >= ARRAY_SIZE(ams_pl_channels))
+ continue;
+
+ chan = &channels[num_channels];
memcpy(chan, &ams_pl_channels[ext_chan], sizeof(*channels));
if (fwnode_property_read_bool(child, "xlnx,bipolar"))
--
2.46.2.windows.1
next reply other threads:[~2026-09-06 11:05 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-06 11:05 Manush Prajwal [this message]
2026-09-06 17:56 ` Jonathan Cameron
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=6a9d48ef.4987c784.3608f9.714a@mx.google.com \
--to=manushprajwal555@gmail.com \
--cc=andy@kernel.org \
--cc=conall.ogriofa@amd.com \
--cc=dlechner@baylibre.com \
--cc=jic23@kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nuno.sa@analog.com \
--cc=sai.krishna.potthuri@amd.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
all inboxes | Powered by JetHome®