From: sashiko-bot@kernel.org
To: "Christian Marangi" <ansuelsmth@gmail.com>
Cc: devicetree@vger.kernel.org, robh@kernel.org, conor+dt@kernel.org
Subject: Re: [PATCH net-next v16 06/12] net: phylink: support late PCS provider attach
Date: Fri, 18 Sep 2026 00:45:23 +0000 [thread overview]
Message-ID: <20260918004523.AF5B21F00899@smtp.kernel.org> (raw)
In-Reply-To: <20260916235200.20712-7-ansuelsmth@gmail.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] phylink: missing pl->supported update on late PCS attach
- [Medium] phylink: data race on pl->supported_interfaces during PCS hotplug
--
commit 09779c4042c55422798d0cff65f1f25068da26a9
Author: Christian Marangi <ansuelsmth@gmail.com>
Subject: net: phylink: support late PCS provider attach
This commit adds support for late PCS provider attachment to a phylink
instance. It introduces a FWNODE_PCS_PROVIDER_ADD event that allows a
PCS provider to be linked and supported interfaces to be refreshed if the
provider is added after the instance is created. If a link was previously
down, it can be re-established when the PCS returns.
> diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
> index 88570a59ba9e7..fb3fb522769b6 100644
> --- a/drivers/net/phy/phylink.c
> +++ b/drivers/net/phy/phylink.c
[ ... ]
> @@ -2006,27 +2027,57 @@ static int pcs_provider_notify(struct notifier_block *self,
> struct fwnode_pcs_provider *pp = data;
> struct phylink_pcs *pcs, *tmp;
> bool resolve = false;
> + int count, i;
>
> - rtnl_lock();
> + /*
> + * On PCS provider deletion hold rtnl lock as one of
> + * PCS can be currently in use by the phylink instance
> + * and ethtool OPs can reference it.
> + */
> + if (val == FWNODE_PCS_PROVIDER_DEL)
> + rtnl_lock();
[Severity: Medium]
Is it safe to conditionally skip rtnl_lock() on the FWNODE_PCS_PROVIDER_ADD
path?
Later in this function, pl->supported_interfaces is modified:
phy_interface_copy(pl->supported_interfaces,
pl->config->supported_interfaces);
list_for_each_entry(pcs, &pl->pcs_list, list)
phy_interface_or(pl->supported_interfaces,
pl->supported_interfaces,
pcs->supported_interfaces);
Functions like phylink_validate_mask() read this multi-word bitmap
word-by-word while holding only rtnl_lock, without acquiring pl->state_mutex.
Could this lead to a torn read, causing concurrent ethtool operations to see
an invalid interface mask and reject valid configurations?
[ ... ]
> /* Exit early if nothing has changed */
> if (!resolve) {
> mutex_unlock(&pl->state_mutex);
> - rtnl_unlock();
> +
> + if (val == FWNODE_PCS_PROVIDER_DEL)
> + rtnl_unlock();
> +
> return NOTIFY_DONE;
> }
>
> @@ -2040,7 +2091,8 @@ static int pcs_provider_notify(struct notifier_block *self,
>
> mutex_unlock(&pl->state_mutex);
>
> - rtnl_unlock();
> + if (val == FWNODE_PCS_PROVIDER_DEL)
> + rtnl_unlock();
>
> phylink_run_resolve(pl);
[Severity: Medium]
When a late PCS is attached, does pl->supported need to be recalculated
alongside pl->supported_interfaces?
If a late PCS provides new interface capabilities (such as new 10G link
modes), updating pl->supported_interfaces without also recalculating
pl->supported (via phylink_validate()) could leave the ethtool capabilities
stale. Could this result in phylink_ethtool_ksettings_set() rejecting valid
configurations?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260916235200.20712-1-ansuelsmth@gmail.com?part=6
next prev parent reply other threads:[~2026-09-18 0:45 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-16 23:51 [PATCH net-next v16 00/12] net: pcs: Introduce support for fwnode PCS Christian Marangi
2026-09-16 23:51 ` [PATCH net-next v16 01/12] net: phylink: keep and use MAC supported_interfaces in phylink struct Christian Marangi
2026-09-16 23:51 ` [PATCH net-next v16 02/12] net: phylink: introduce internal phylink PCS handling Christian Marangi
2026-09-18 0:45 ` sashiko-bot
2026-09-16 23:51 ` [PATCH net-next v16 03/12] net: pcs: implement Firmware node support for PCS driver Christian Marangi
2026-09-18 0:45 ` sashiko-bot
2026-09-16 23:51 ` [PATCH net-next v16 04/12] net: phylink: save phylink instance fwnode on phylink_create Christian Marangi
2026-09-16 23:51 ` [PATCH net-next v16 05/12] net: phylink: support PCS provider release Christian Marangi
2026-09-18 0:45 ` sashiko-bot
2026-09-16 23:51 ` [PATCH net-next v16 06/12] net: phylink: support late PCS provider attach Christian Marangi
2026-09-18 0:45 ` sashiko-bot [this message]
2026-09-16 23:51 ` [PATCH net-next v16 07/12] net: Document PCS subsystem Christian Marangi
2026-09-18 0:45 ` sashiko-bot
2026-09-16 23:51 ` [PATCH net-next v16 08/12] MAINTAINERS: add myself as PCS subsystem maintainer Christian Marangi
2026-09-16 23:51 ` [PATCH net-next v16 09/12] net: phylink: add .pcs_link_down PCS OP Christian Marangi
2026-09-16 23:51 ` [PATCH net-next v16 10/12] dt-bindings: net: pcs: Document support for Airoha Ethernet PCS Christian Marangi
2026-09-24 22:17 ` Rob Herring (Arm)
2026-09-16 23:51 ` [PATCH net-next v16 11/12] net: pcs: airoha: add PCS driver for Airoha AN7581 SoC Christian Marangi
2026-09-18 0:45 ` sashiko-bot
2026-09-16 23:51 ` [PATCH net-next v16 12/12] net: airoha: add phylink support Christian Marangi
2026-09-21 20:59 ` [PATCH net-next v16 00/12] net: pcs: Introduce support for fwnode PCS Jakub Kicinski
2026-09-22 10:12 ` Christian Marangi (Ansuel)
2026-09-22 12:49 ` Maxime Chevallier
2026-09-22 13:26 ` Coia Prant
2026-09-23 0:25 ` Jakub Kicinski
2026-09-23 8:31 ` Christian Marangi (Ansuel)
2026-09-24 3:11 ` Jakub Kicinski
2026-09-24 8:03 ` Maxime Chevallier
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=20260918004523.AF5B21F00899@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=ansuelsmth@gmail.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=robh@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/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.