From: Philip Radford <philip.radford@arm.com>
To: Sudeep Holla <sudeep.holla@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org, arm-scmi@vger.kernel.org,
Cristian Marussi <cristian.marussi@arm.com>,
Peng Fan <peng.fan@nxp.com>, Sashiko <sashiko-bot@kernel.org>
Subject: Re: [PATCH 2/3] firmware: arm_scmi: imx: Validate MISC control response size
Date: Thu, 29 Oct 2026 22:05:31 +0000 [thread overview]
Message-ID: <auPDK9bG/H8GTOK5@e121740.arm.com> (raw)
In-Reply-To: <20261028130502.2999676-2-sudeep.holla@kernel.org>
On Wed, Oct 28, 2026 at 01:05:01PM +0000, Sudeep Holla wrote:
> scmi_imx_misc_ctrl_get() uses @num to report the number of
> values returned by firmware, but it did not retain the caller's value
> as the capacity of @val.
>
Hi,
> A response with more values than the caller allocated was copied into
> @val unchecked. For example, the MQS regmap callback supplies storage
> for one value. Retain the input capacity and reject responses exceeding
> it before copying, then update @num only after a successful copy.
>
> Document the in/out @num contract of the exported helper.
>
> Reported-by: Sashiko <sashiko-bot@kernel.org>
> Closes: https://sashiko.dev/#/bug/linux-6897b44a-57fb-4964-95f8-447d0ce526e4
> Fixes: 61c9f03e22fc ("firmware: arm_scmi: Add initial support for i.MX MISC protocol")
> Signed-off-by: Sudeep Holla <sudeep.holla@kernel.org>
> Reviewed-by: Peng Fan <peng.fan@nxp.com>
> ---
> .../firmware/arm_scmi/vendors/imx/imx-sm-misc.c | 16 ++++++++++++----
> include/linux/firmware/imx/sm.h | 6 ++++++
> 2 files changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/firmware/arm_scmi/vendors/imx/imx-sm-misc.c b/drivers/firmware/arm_scmi/vendors/imx/imx-sm-misc.c
> index 0c708b2dd496..f00f7acba845 100644
> --- a/drivers/firmware/arm_scmi/vendors/imx/imx-sm-misc.c
> +++ b/drivers/firmware/arm_scmi/vendors/imx/imx-sm-misc.c
> @@ -273,10 +273,16 @@ static int scmi_imx_misc_ctrl_get(const struct scmi_protocol_handle *ph,
> {
> struct scmi_imx_misc_ctrl_get_out *out;
> struct scmi_xfer *t;
> + u32 num_values, max_values;
> int ret, i;
> int max_msg_size = ph->hops->get_max_msg_size(ph);
> int max_num = (max_msg_size - sizeof(*out)) / sizeof(__le32);
>
> + if (!num || !val || !*num)
> + return -EINVAL;
> +
> + max_values = *num;
> +
> ret = scmi_imx_misc_ctrl_validate_id(ph, ctrl_id);
> if (ret)
> return ret;
> @@ -290,16 +296,18 @@ static int scmi_imx_misc_ctrl_get(const struct scmi_protocol_handle *ph,
> ret = ph->xops->do_xfer(ph, t);
> if (!ret) {
> out = t->rx.buf;
> - *num = le32_to_cpu(out->num);
> + num_values = le32_to_cpu(out->num);
>
> - if (*num >= max_num ||
> - *num * sizeof(__le32) > t->rx.len - sizeof(__le32)) {
> + if (num_values > max_values || num_values >= max_num ||
> + num_values * sizeof(__le32) > t->rx.len - sizeof(__le32)) {
> ph->xops->xfer_put(ph, t);
> return -EINVAL;
> }
Why does num_values have to be less than max_num, can it not be equal to? Isn't max_num
already smaller than max_msg_size due to the initialisation above?
Regards,
Phil
next prev parent reply other threads:[~2026-10-29 22:05 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-28 13:05 [PATCH 1/3] firmware: arm_scmi: imx: Track copied syslog words Sudeep Holla
2026-10-28 13:05 ` [PATCH 2/3] firmware: arm_scmi: imx: Validate MISC control response size Sudeep Holla
2026-10-28 13:05 ` [PATCH 3/3] firmware: arm_scmi: Unregister notifier on enable failure Sudeep Holla
2026-10-28 13:51 ` Peng Fan
2026-10-28 13:49 ` [PATCH 2/3] firmware: arm_scmi: imx: Validate MISC control response size Peng Fan
2026-10-29 22:05 ` Philip Radford [this message]
2026-10-28 13:49 ` [PATCH 1/3] firmware: arm_scmi: imx: Track copied syslog words Peng Fan
2026-10-28 13:55 ` Sudeep Holla
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=auPDK9bG/H8GTOK5@e121740.arm.com \
--to=philip.radford@arm.com \
--cc=arm-scmi@vger.kernel.org \
--cc=cristian.marussi@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=peng.fan@nxp.com \
--cc=sashiko-bot@kernel.org \
--cc=sudeep.holla@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.