All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cristian Marussi <cristian.marussi@arm.com>
To: Dan Carpenter <dan.carpenter@linaro.org>
Cc: Cristian Marussi <cristian.marussi@arm.com>,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, arm-scmi@vger.kernel.org,
	sudeep.holla@arm.com, james.quinlan@broadcom.com,
	f.fainelli@gmail.com, vincent.guittot@linaro.org,
	etienne.carriere@st.com, peng.fan@oss.nxp.com,
	michal.simek@amd.com, quic_sibis@quicinc.com, d-gole@ti.com,
	souvik.chakravarty@arm.com
Subject: Re: [RFC PATCH 3/7] firmware: arm_scmi: Add Telemetry protocol support
Date: Wed, 25 Jun 2025 15:04:00 +0100	[thread overview]
Message-ID: <aFwB0Ok90aoSxPe5@pluto> (raw)
In-Reply-To: <0c71e182-9aac-426d-b58b-41f118b9a8f2@suswa.mountain>

On Fri, Jun 20, 2025 at 11:46:15PM +0300, Dan Carpenter wrote:
> On Fri, Jun 20, 2025 at 08:28:09PM +0100, Cristian Marussi wrote:
> > +static int
> > +scmi_telemetry_protocol_attributes_get(const struct scmi_protocol_handle *ph,
> > +				       struct telemetry_info *ti)
> > +{

... and also...

> > +	int ret;
> > +	struct scmi_xfer *t;
> > +	struct scmi_msg_resp_telemetry_protocol_attributes *resp;
> > +
> > +	ret = ph->xops->xfer_get_init(ph, PROTOCOL_ATTRIBUTES,
> > +				      0, sizeof(*resp), &t);
> > +	if (ret)
> > +		return ret;
> > +
> > +	resp = t->rx.buf;
> > +	ret = ph->xops->do_xfer(ph, t);
> > +	if (!ret) {
> > +		__le32 attr = resp->attributes;
> > +
> > +		ti->info.num_de = le32_to_cpu(resp->de_num);
> > +		ti->info.num_groups = le32_to_cpu(resp->groups_num);
> > +		for (int i = 0; i < SCMI_TLM_MAX_DWORD; i++)
> > +			ti->info.de_impl_version[i] =
> > +				le32_to_cpu(resp->de_implementation_rev_dword[i]);
> > +		ti->info.single_read_support = SUPPORTS_SINGLE_READ(attr);
> > +		ti->info.continuos_update_support = SUPPORTS_CONTINUOS_UPDATE(attr);
> > +		ti->info.per_group_config_support = SUPPORTS_PER_GROUP_CONFIG(attr);
> > +		ti->info.reset_support = SUPPORTS_RESET(attr);
> > +		ti->info.fc_support = SUPPORTS_FC(attr);
> > +		ti->num_shmti = le32_get_bits(attr, GENMASK(15, 0));
> > +		/* Allocate DEs descriptors */
> > +		ti->info.des = devm_kcalloc(ph->dev, ti->info.num_de,
> > +					    sizeof(*ti->info.des), GFP_KERNEL);
> > +		if (!ti->info.des)
> > +			ret = -ENOMEM;
> > +
> > +		/* Allocate DE GROUPS descriptors */
> > +		ti->info.des_groups = devm_kcalloc(ph->dev, ti->info.num_groups,
> > +						   sizeof(*ti->info.des_groups),
> > +						   GFP_KERNEL);
> > +		if (!ti->info.des_groups)
> > +			ret = -ENOMEM;
> 
> It the allocation fails we need to jump to the ->xfer_put
> 
> > +
> > +		for (int i = 0; i < ti->info.num_groups; i++)
> > +			ti->info.des_groups[i].id = i;
> 
> otherwise it leads to a NULL dereference.
> 
> > +	}
> > +
> > +	ph->xops->xfer_put(ph, t);
> > +
> > +	return ret;
> > +}
> 
> [ snip ]
> 
> > +static int iter_shmti_process_response(const struct scmi_protocol_handle *ph,
> > +				       const void *response,
> > +				       struct scmi_iterator_state *st,
> > +				       void *priv)
> > +{
> > +	const struct scmi_msg_resp_telemetry_shmti_list *r = response;
> > +	struct telemetry_info *ti = priv;
> > +	struct telemetry_shmti *shmti;
> > +	const struct scmi_shmti_desc *desc;
> > +	void __iomem *addr;
> > +	u64 phys_addr;
> > +	u32 len;
> > +
> > +	desc = &r->desc[st->loop_idx];
> > +	shmti = &ti->shmti[st->desc_index + st->loop_idx];
> > +
> > +	shmti->id = le32_to_cpu(desc->id);
> > +	phys_addr = le32_to_cpu(desc->addr_low);
> > +	phys_addr |= (u64)le32_to_cpu(desc->addr_high) << 32;
> > +
> > +	len = le32_to_cpu(desc->length);
> > +	addr = devm_ioremap(ph->dev, phys_addr, len);
> > +	if (!addr)
> > +		return -EADDRNOTAVAIL;
> > +
> > +	shmti->base = addr;
> > +	shmti->len = len;
> 
> There is some code later which assumes ->len is at least
> TDCF_EPLG_SZ and de->data_sz.  This is probably where we should
> check if (len < TDCF_EPLG_SZ) return -EINVAL; and the de->data_sz
> would be checked later.

I will add proper checks

Thanks,
Cristian

  parent reply	other threads:[~2025-06-25 14:04 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-20 19:28 [RFC PATCH 0/7] Introduce SCMI Telemetry support Cristian Marussi
2025-06-20 19:28 ` [RFC PATCH 1/7] firmware: arm_scmi: Define a common SCMI_MAX_PROTOCOLS value Cristian Marussi
2025-06-24  3:13   ` Peng Fan
2025-06-25 13:59     ` Cristian Marussi
2025-06-20 19:28 ` [RFC PATCH 2/7] firmware: arm_scmi: Allow protocols to register for notifications Cristian Marussi
2025-06-20 19:28 ` [RFC PATCH 3/7] firmware: arm_scmi: Add Telemetry protocol support Cristian Marussi
2025-06-20 20:46   ` Dan Carpenter
2025-06-25 14:02     ` Cristian Marussi
2025-06-25 14:04     ` Cristian Marussi [this message]
2025-06-20 21:01   ` Dan Carpenter
2025-06-25 14:04     ` Cristian Marussi
2025-06-20 19:28 ` [RFC PATCH 4/7] firmware: arm_scmi: Add System Telemetry driver Cristian Marussi
2025-06-20 21:27   ` Dan Carpenter
2025-06-25 14:11     ` Cristian Marussi
2025-06-21 16:50   ` kernel test robot
2025-06-20 19:28 ` [RFC PATCH 5/7] firmware: arm_scmi: Add System Telemetry chardev/ioctls API Cristian Marussi
2025-06-20 21:51   ` Dan Carpenter
2025-06-25 14:14     ` Cristian Marussi
2025-06-23  9:27   ` kernel test robot
2025-06-20 19:28 ` [RFC PATCH 6/7] include: trace: Add Telemetry trace events Cristian Marussi
2025-06-20 19:28 ` [RFC PATCH 7/7] firmware: arm_scmi: Use new Telemetry traces Cristian Marussi
2025-06-24 10:22 ` [RFC PATCH 0/7] Introduce SCMI Telemetry support Dhruva Gole
2025-06-25 14:53   ` Cristian Marussi

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=aFwB0Ok90aoSxPe5@pluto \
    --to=cristian.marussi@arm.com \
    --cc=arm-scmi@vger.kernel.org \
    --cc=d-gole@ti.com \
    --cc=dan.carpenter@linaro.org \
    --cc=etienne.carriere@st.com \
    --cc=f.fainelli@gmail.com \
    --cc=james.quinlan@broadcom.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michal.simek@amd.com \
    --cc=peng.fan@oss.nxp.com \
    --cc=quic_sibis@quicinc.com \
    --cc=souvik.chakravarty@arm.com \
    --cc=sudeep.holla@arm.com \
    --cc=vincent.guittot@linaro.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.