From: Jakub Kicinski <kuba@kernel.org>
To: maxime.chevallier@bootlin.com
Cc: Jakub Kicinski <kuba@kernel.org>,
daniel@makrotopia.org, christophe.leroy@csgroup.eu,
kabel@kernel.org, kory.maincent@bootlin.com,
f.fainelli@gmail.com, vladimir.oltean@nxp.com,
netdev@vger.kernel.org, horms@kernel.org, mwojtas@chromium.org,
o.rempel@pengutronix.de, romain.gantois@bootlin.com,
herve.codina@bootlin.com, dimitri.fedrau@liebherr.com,
hkallweit1@gmail.com, nicveronese@gmail.com,
linux-kernel@vger.kernel.org, edumazet@google.com,
pabeni@redhat.com, thomas.petazzoni@bootlin.com, andrew@lunn.ch,
davem@davemloft.net, linux@armlinux.org.uk
Subject: Re: [net-next,v2,08/12] net: phylink: Represent PHY-less SFP modules with phy_port
Date: Thu, 29 Jan 2026 20:00:13 -0800 [thread overview]
Message-ID: <20260130040014.707804-1-kuba@kernel.org> (raw)
In-Reply-To: <20260128204526.170927-9-maxime.chevallier@bootlin.com>
This is an AI-generated review of your patch. The human sending this
email has considered the AI review valid, or at least plausible.
For local reproduction steps see https://netdev-ai.bots.linux.dev/ai-local.html
---
net: phylink: Represent PHY-less SFP modules with phy_port
This patch adds support for representing PHY-less SFP modules using
phy_port by implementing connect_nophy and disconnect_nophy callbacks
for phylink.
> diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
> index 310af33d49a0..21af1dffa837 100644
[ ... ]
> +static int phylink_sfp_connect_nophy(void *upstream)
> +{
> + const struct sfp_module_caps *caps;
> + struct phylink *pl = upstream;
> + struct phy_port *port;
> + int ret = 0;
> +
> + if (!pl->sfp_bus_port)
> + return 0;
This early return guards against sfp_bus_port being NULL, which prevents
mod_port from being allocated in that case.
> +
> + /* Create mod port */
> + port = phy_port_alloc();
[ ... ]
> + pl->mod_port = port;
> +
> + return 0;
> +}
> +
> +static void phylink_sfp_disconnect_nophy(void *upstream)
> +{
> + struct phylink *pl = upstream;
> +
> + if (pl->netdev)
> + phy_link_topo_del_port(pl->netdev, pl->mod_port);
^^^^^^^^^
Can pl->mod_port be NULL here? Looking at the SFP state machine in
sfp.c, sfp_module_disconnect_nophy() is called from the global cleanup
block when !sfp->mod_phy. This cleanup runs whenever the state machine
is not in SFP_S_DOWN and the module state changes.
If the module is removed while the state machine is in an early state
like SFP_S_WAIT or SFP_S_INIT (before PHY probing completes),
sfp_module_disconnect_nophy() will be called even though
phylink_sfp_connect_nophy() was never invoked. In that case, pl->mod_port
is still NULL.
The phy_link_topo_del_port() function dereferences port->id without a
NULL check, which would cause a NULL pointer dereference.
Should this check for pl->mod_port before calling phy_link_topo_del_port,
similar to how phylink_destroy_sfp_port() does?
> +
> + phy_port_destroy(pl->mod_port);
> + pl->mod_port = NULL;
> +}
next prev parent reply other threads:[~2026-01-30 4:00 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-28 20:45 [PATCH net-next v2 00/12] net: phy_port: SFP modules representation and phy_port listing Maxime Chevallier
2026-01-28 20:45 ` [PATCH net-next v2 01/12] net: phy: phy_port: Correctly recompute the port's linkmodes Maxime Chevallier
2026-01-30 4:00 ` [net-next,v2,01/12] " Jakub Kicinski
2026-01-28 20:45 ` [PATCH net-next v2 02/12] net: phy: phy_link_topology: Add a helper for opportunistic alloc Maxime Chevallier
2026-01-28 20:45 ` [PATCH net-next v2 03/12] net: phy: phy_link_topology: Track ports in phy_link_topology Maxime Chevallier
2026-01-30 4:00 ` [net-next,v2,03/12] " Jakub Kicinski
2026-01-28 20:45 ` [PATCH net-next v2 04/12] net: phylink: Register a phy_port for MAC-driven SFP busses Maxime Chevallier
2026-01-28 20:45 ` [PATCH net-next v2 05/12] net: phy: Create SFP phy_port before registering usptream Maxime Chevallier
2026-01-28 20:45 ` [PATCH net-next v2 06/12] net: sfp: Add a sfp-bus ops when connecting a module without PHY Maxime Chevallier
2026-01-28 20:45 ` [PATCH net-next v2 07/12] net: phy: Represent PHY-less SFP modules with phy_port Maxime Chevallier
2026-01-28 20:45 ` [PATCH net-next v2 08/12] net: phylink: " Maxime Chevallier
2026-01-30 4:00 ` Jakub Kicinski [this message]
2026-01-28 20:45 ` [PATCH net-next v2 09/12] net: phy: phy_port: Store information about a MII port's occupancy Maxime Chevallier
2026-01-30 4:00 ` [net-next,v2,09/12] " Jakub Kicinski
2026-01-28 20:45 ` [PATCH net-next v2 10/12] net: phy: phy_link_topology: Add a helper to retrieve ports Maxime Chevallier
2026-01-28 20:45 ` [PATCH net-next v2 11/12] netlink: specs: Add ethernet port listing with ethtool Maxime Chevallier
2026-01-28 20:45 ` [PATCH net-next v2 12/12] net: ethtool: Introduce ethtool command to list ports Maxime Chevallier
2026-01-30 3:59 ` [PATCH net-next v2 00/12] net: phy_port: SFP modules representation and phy_port listing Jakub Kicinski
2026-01-30 8:21 ` 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=20260130040014.707804-1-kuba@kernel.org \
--to=kuba@kernel.org \
--cc=andrew@lunn.ch \
--cc=christophe.leroy@csgroup.eu \
--cc=daniel@makrotopia.org \
--cc=davem@davemloft.net \
--cc=dimitri.fedrau@liebherr.com \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=herve.codina@bootlin.com \
--cc=hkallweit1@gmail.com \
--cc=horms@kernel.org \
--cc=kabel@kernel.org \
--cc=kory.maincent@bootlin.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=maxime.chevallier@bootlin.com \
--cc=mwojtas@chromium.org \
--cc=netdev@vger.kernel.org \
--cc=nicveronese@gmail.com \
--cc=o.rempel@pengutronix.de \
--cc=pabeni@redhat.com \
--cc=romain.gantois@bootlin.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=vladimir.oltean@nxp.com \
/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.