From: sashiko-bot@kernel.org
To: "Chen-Yu Tsai" <wenst@chromium.org>
Cc: devicetree@vger.kernel.org, robh@kernel.org, conor+dt@kernel.org
Subject: Re: [PATCH v4 01/14] device property: Add fwnode_graph_get_port_by_id()
Date: Thu, 09 Jul 2026 10:13:57 +0000 [thread overview]
Message-ID: <20260709101358.15FA11F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260709095726.704448-2-wenst@chromium.org>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] fwnode_graph_get_port_by_id() unexpectedly skips unconnected or disabled ports.
- [Low] Missing `const` qualifier on the `fwnode` parameter in the new fwnode graph API.
--
--- Patch [1]: [PATCH v4 01/14] device property: Add fwnode_graph_get_port_by_id() ---
commit 4c6b92ebbe0a97ba47216632078d3f24afd73cf4
Author: Chen-Yu Tsai <wenst@chromium.org>
device property: Add fwnode_graph_get_port_by_id()
This commit introduces a helper function, fwnode_graph_get_port_by_id(),
to retrieve a port firmware node matching a given ID. It is intended to
be used for cases like USB power sequencing where a reference to the port
firmware node is needed.
> diff --git a/drivers/base/property.c b/drivers/base/property.c
> index e08eadd66f4f9..c5e7e00f1b0cd 100644
> --- a/drivers/base/property.c
> +++ b/drivers/base/property.c
[ ... ]
> @@ -1346,6 +1346,28 @@ int fwnode_graph_parse_endpoint(const struct fwnode_handle *fwnode,
> }
> EXPORT_SYMBOL(fwnode_graph_parse_endpoint);
>
> +/**
> + * fwnode_graph_get_port_by_id - get the port matching a given id
> + * @fwnode: parent fwnode_handle containing the graph
> + * @id: id of the port
> + *
> + * The caller is responsible for calling fwnode_handle_put() on the returned
> + * fwnode pointer.
> + *
> + * Return: A 'port' firmware node pointer with refcount incremented.
> + */
> +struct fwnode_handle *fwnode_graph_get_port_by_id(struct fwnode_handle *fwnode, u32 id)
[Severity: Low]
Should the fwnode parameter have a const qualifier?
fwnode_graph_get_endpoint_by_id() takes a const struct fwnode_handle *, so
there appears to be no technical reason for this function to require a mutable
pointer. Keeping it non-const forces callers holding a const pointer to cast
away constness to use this helper.
> +{
> + struct fwnode_handle *ep;
> +
> + ep = fwnode_graph_get_endpoint_by_id(fwnode, id, 0, FWNODE_GRAPH_ENDPOINT_NEXT);
[Severity: High]
Does this unexpectedly skip unconnected or disabled ports?
Because the FWNODE_GRAPH_DEVICE_DISABLED flag is omitted here,
fwnode_graph_get_endpoint_by_id() will implicitly filter out all endpoints
where fwnode_graph_remote_available() is false. If a local port only contains
unconnected endpoints or its remote device is disabled, this will incorrectly
return NULL.
Will callers (like the upcoming USB power sequencing) fail to find local port
firmware nodes if the port happens to be unconnected?
> + if (!ep)
> + return NULL;
> +
> + return fwnode_get_next_parent(ep);
> +}
> diff --git a/include/linux/property.h b/include/linux/property.h
> index 14c304db46648..e04901c0bd8f7 100644
> --- a/include/linux/property.h
> +++ b/include/linux/property.h
[ ... ]
> @@ -505,6 +505,7 @@ int fwnode_get_phy_mode(const struct fwnode_handle *fwnode);
>
> void __iomem *fwnode_iomap(struct fwnode_handle *fwnode, int index);
>
> +struct fwnode_handle *fwnode_graph_get_port_by_id(struct fwnode_handle *fwnode, u32 id);
[Severity: Low]
Can we also update the exported header prototype to match, propagating the
const qualifier to API consumers?
> struct fwnode_handle *fwnode_graph_get_next_endpoint(
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260709095726.704448-1-wenst@chromium.org?part=1
next prev parent reply other threads:[~2026-07-09 10:13 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-09 9:57 [PATCH v4 00/14] arm64: mediatek: Add M.2 E-key slot on Chromebooks Chen-Yu Tsai
2026-07-09 9:57 ` [PATCH v4 01/14] device property: Add fwnode_graph_get_port_by_id() Chen-Yu Tsai
2026-07-09 10:13 ` sashiko-bot [this message]
2026-07-09 9:57 ` [PATCH v4 02/14] device property: Add fwnode_graph_get_next_port_endpoint() Chen-Yu Tsai
2026-07-09 10:26 ` sashiko-bot
2026-07-09 9:57 ` [PATCH v4 03/14] power: sequencing: Add pwrseq_power_is_on() Chen-Yu Tsai
2026-07-09 10:33 ` Andy Shevchenko
2026-07-09 10:35 ` sashiko-bot
2026-07-09 9:57 ` [PATCH v4 04/14] usb: hub: Return actual error from hub_configure() in hub_probe() Chen-Yu Tsai
2026-07-09 9:57 ` [PATCH v4 05/14] usb: hub: Associate port@ fwnode with USB port device Chen-Yu Tsai
2026-07-09 11:04 ` sashiko-bot
2026-07-10 12:08 ` Greg Kroah-Hartman
2026-07-09 9:57 ` [PATCH v4 06/14] usb: core: Move struct usb_port and related APIs to port.h Chen-Yu Tsai
2026-07-09 10:36 ` Andy Shevchenko
2026-07-09 14:30 ` Bartosz Golaszewski
2026-07-09 9:57 ` [PATCH v4 07/14] usb: hub: Pass |struct usb_port*| to usb_port_is_power_on() Chen-Yu Tsai
2026-07-09 10:38 ` Andy Shevchenko
2026-07-09 9:57 ` [PATCH v4 08/14] usb: hub: Use usb_hub_set_port_power() to control port power everywhere Chen-Yu Tsai
2026-07-09 10:39 ` Andy Shevchenko
2026-07-09 9:57 ` [PATCH v4 09/14] usb: hub: Power on connected M.2 E-key connectors with power sequencing API Chen-Yu Tsai
2026-07-09 10:53 ` Andy Shevchenko
2026-07-09 11:45 ` sashiko-bot
2026-07-09 9:57 ` [PATCH v4 10/14] dt-bindings: usb: mediatek,mtk-xhci: Switch to ports for USB connections Chen-Yu Tsai
2026-07-09 11:58 ` sashiko-bot
2026-07-09 14:31 ` Bartosz Golaszewski
2026-07-09 9:57 ` [PATCH v4 11/14] power: sequencing: pcie-m2: support matching on remote "port" node Chen-Yu Tsai
2026-07-09 10:55 ` Andy Shevchenko
2026-07-09 9:57 ` [PATCH v4 12/14] power: sequencing: pcie-m2: Add usb and sdio targets for E-key connector Chen-Yu Tsai
2026-07-09 9:57 ` [PATCH v4 13/14] arm64: dts: mediatek: mt8195-cherry: Add M.2 E-key slot Chen-Yu Tsai
2026-07-09 12:35 ` sashiko-bot
2026-07-09 9:57 ` [PATCH v4 14/14] arm64: dts: mediatek: mt8188-geralt: Add WiFi/BT as " Chen-Yu Tsai
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=20260709101358.15FA11F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=robh@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=wenst@chromium.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox