All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Christian Marangi" <ansuelsmth@gmail.com>
Cc: conor+dt@kernel.org, devicetree@vger.kernel.org, robh@kernel.org
Subject: Re: [PATCH net-next v16 03/12] net: pcs: implement Firmware node support for PCS driver
Date: Fri, 18 Sep 2026 00:45:21 +0000	[thread overview]
Message-ID: <20260918004522.0EE001F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260916235200.20712-4-ansuelsmth@gmail.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] net: pcs: fwnode_pcs_get clobbers xlate errors breaking probe deferral
--

commit d550ff71d0bd4e8598c8df7253dec52309a1c719
Author: Christian Marangi <ansuelsmth@gmail.com>

net: pcs: implement Firmware node support for PCS driver

Implements the foundation of Firmware node support for PCS drivers. This
provides a simple Provider API where a PCS driver can expose multiple PCS
with a fwnode_xlate function.

> diff --git a/drivers/net/pcs/pcs.c b/drivers/net/pcs/pcs.c
> new file mode 100644
> index 0000000000000..39550d9a12a2a
> --- /dev/null
> +++ b/drivers/net/pcs/pcs.c

[ ... ]

> +static struct phylink_pcs *
> +__fwnode_pcs_get_from_pcsspec_provider(struct fwnode_reference_args *pcsspec,
> +				       struct fwnode_pcs_provider *provider)
> +{
> +	if (provider->fwnode != pcsspec->fwnode)
> +		return ERR_PTR(-EINVAL);
> +
> +	return provider->fwnode_xlate(pcsspec, provider->data);
> +}
> +
> +static struct phylink_pcs *
> +fwnode_pcs_get_from_pcsspec(struct fwnode_reference_args *pcsspec)
> +{
> +	struct fwnode_pcs_provider *provider;
> +	struct phylink_pcs *pcs = NULL;
> +
> +	if (!pcsspec)
> +		return ERR_PTR(-EINVAL);
> +
> +	mutex_lock(&fwnode_pcs_mutex);
> +	list_for_each_entry(provider, &fwnode_pcs_providers, link) {
> +		pcs = __fwnode_pcs_get_from_pcsspec_provider(pcsspec, provider);
> +		if (!IS_ERR(pcs))
> +			break;
> +	}

[Severity: High]
Does this loop clobber errors returned by the matching provider's xlate
function?

Looking at __fwnode_pcs_get_from_pcsspec_provider(), it returns -EINVAL if
the fwnode doesn't match, or the result of fwnode_xlate() if it does. If
fwnode_xlate() returns an error like -EPROBE_DEFER, !IS_ERR(pcs) evaluates
to false, causing the loop to continue.

The original error is then overwritten by -EINVAL from subsequent
non-matching providers. Should the loop break if the provider matches the
fwnode, regardless of whether the returned pcs is an error?

> +	mutex_unlock(&fwnode_pcs_mutex);
> +
> +	return !IS_ERR_OR_NULL(pcs) ? pcs : ERR_PTR(-ENODEV);

[Severity: High]
Does this unconditional return of -ENODEV squash probe deferrals?

If pcs holds an error pointer (like -EPROBE_DEFER) at the end of the loop,
this statement masks the original error code by always returning -ENODEV.

This breaks module load ordering and prevents MAC drivers from correctly
deferring probe until their PCS is ready.

> +}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260916235200.20712-1-ansuelsmth@gmail.com?part=3

  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 [this message]
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
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=20260918004522.0EE001F000FF@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.