netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Maxime Chevallier <maxime.chevallier@bootlin.com>
To: Jakub Kicinski <kuba@kernel.org>
Cc: davem@davemloft.net, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org, thomas.petazzoni@bootlin.com,
	"Andrew Lunn" <andrew@lunn.ch>,
	"Eric Dumazet" <edumazet@google.com>,
	"Paolo Abeni" <pabeni@redhat.com>,
	"Russell King" <linux@armlinux.org.uk>,
	linux-arm-kernel@lists.infradead.org,
	"Christophe Leroy" <christophe.leroy@csgroup.eu>,
	"Herve Codina" <herve.codina@bootlin.com>,
	"Florian Fainelli" <f.fainelli@gmail.com>,
	"Heiner Kallweit" <hkallweit1@gmail.com>,
	"Vladimir Oltean" <vladimir.oltean@nxp.com>,
	"Köry Maincent" <kory.maincent@bootlin.com>,
	"Jesse Brandeburg" <jesse.brandeburg@intel.com>,
	"Marek Behún" <kabel@kernel.org>,
	"Piergiorgio Beruto" <piergiorgio.beruto@gmail.com>,
	"Oleksij Rempel" <o.rempel@pengutronix.de>,
	"Nicolò Veronese" <nicveronese@gmail.com>,
	"Simon Horman" <horms@kernel.org>,
	mwojtas@chromium.org, "Nathan Chancellor" <nathan@kernel.org>,
	"Antoine Tenart" <atenart@kernel.org>
Subject: Re: [PATCH net-next v13 05/13] net: ethtool: Allow passing a phy index for some commands
Date: Sun, 16 Jun 2024 18:02:31 +0200	[thread overview]
Message-ID: <20240616180231.338c2e6c@fedora> (raw)
In-Reply-To: <20240613182613.5a11fca5@kernel.org>

Hello Jakub,

On Thu, 13 Jun 2024 18:26:13 -0700
Jakub Kicinski <kuba@kernel.org> wrote:

> On Fri,  7 Jun 2024 09:18:18 +0200 Maxime Chevallier wrote:
> > +		if (tb[ETHTOOL_A_HEADER_PHY_INDEX]) {
> > +			struct nlattr *phy_id;
> > +
> > +			phy_id = tb[ETHTOOL_A_HEADER_PHY_INDEX];
> > +			phydev = phy_link_topo_get_phy(dev,
> > +						       nla_get_u32(phy_id));  
> 
> Sorry for potentially repeating question (please put the answer in the
> commit message) - are phys guaranteed not to disappear, even if the
> netdev gets closed? this has no rtnl protection

I'll answer here so that people can correct me if I'm wrong, but I'll
also add it in the commit logs as well (and possibly with some fixes
depending on how this discussion goes)

While a PHY can be attached to/detached from a netdevice at open/close,
the phy_device itself will keep on living, as its lifetime is tied to
the underlying mdio_device (however phy_attach/detach take a ref on the
phy_device, preventing it from vanishing while it's attached to a
netdev)

I think the worst that could happen is that phy_detach() gets
called (at ndo_close() for example, but that's not the only possible
call site for that), and right after we manually unbind the PHY, which
will drop its last refcount, while we hold a pointer to it :

			phydev = phy_link_topo_get_phy()
 phy_detach(phydev)
 unbind on phydev
			/* access phydev */
			
PHY device lifetime is, from my understanding, not protected by
rtnl() so should a lock be added, I don't think rtnl_lock() would be
the one to use.

Maybe instead we should grab a reference to the phydev when we add it
to the topology ?

> 
> > +			if (!phydev) {
> > +				NL_SET_BAD_ATTR(extack, phy_id);
> > +				return -ENODEV;
> > +			}
> > +		} else {
> > +			/* If we need a PHY but no phy index is specified, fallback
> > +			 * to dev->phydev  
> 
> please double check the submission for going over 80 chars, this one
> appears to be particularly pointlessly over 80 chars...

Arg yes sorry about this one...
 
> > +			 */
> > +			phydev = dev->phydev;  

Thanks,

Maxime

  reply	other threads:[~2024-06-16 14:03 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-07  7:18 [PATCH net-next v13 00/13] Introduce PHY listing and link_topology tracking Maxime Chevallier
2024-06-07  7:18 ` [PATCH net-next v13 01/13] net: phy: Introduce ethernet link topology representation Maxime Chevallier
2024-06-14  0:58   ` Jakub Kicinski
2024-06-14  9:20     ` Maxime Chevallier
2024-06-07  7:18 ` [PATCH net-next v13 02/13] net: sfp: pass the phy_device when disconnecting an sfp module's PHY Maxime Chevallier
2024-06-07  7:18 ` [PATCH net-next v13 03/13] net: phy: add helpers to handle sfp phy connect/disconnect Maxime Chevallier
2024-06-07  7:18 ` [PATCH net-next v13 04/13] net: sfp: Add helper to return the SFP bus name Maxime Chevallier
2024-06-14  1:13   ` Jakub Kicinski
2024-06-07  7:18 ` [PATCH net-next v13 05/13] net: ethtool: Allow passing a phy index for some commands Maxime Chevallier
2024-06-14  1:26   ` Jakub Kicinski
2024-06-16 16:02     ` Maxime Chevallier [this message]
2024-06-16 15:21       ` Andrew Lunn
2024-06-16 16:07         ` Russell King (Oracle)
2024-06-16 21:31           ` Maxime Chevallier
2024-06-16 16:15       ` Russell King (Oracle)
2024-06-23  1:21     ` Maxime Chevallier
2024-06-07  7:18 ` [PATCH net-next v13 06/13] netlink: specs: add phy-index as a header parameter Maxime Chevallier
2024-06-07  7:18 ` [PATCH net-next v13 07/13] net: ethtool: Introduce a command to list PHYs on an interface Maxime Chevallier
2024-06-14  1:18   ` Jakub Kicinski
2024-06-20  3:50     ` Maxime Chevallier
2024-06-07  7:18 ` [PATCH net-next v13 08/13] netlink: specs: add ethnl PHY_GET command set Maxime Chevallier
2024-06-07  7:18 ` [PATCH net-next v13 09/13] net: ethtool: plca: Target the command to the requested PHY Maxime Chevallier
2024-06-07  7:18 ` [PATCH net-next v13 10/13] net: ethtool: pse-pd: " Maxime Chevallier
2024-06-07  7:18 ` [PATCH net-next v13 11/13] net: ethtool: cable-test: " Maxime Chevallier
2024-06-07  7:18 ` [PATCH net-next v13 12/13] net: ethtool: strset: Allow querying phy stats by index Maxime Chevallier
2024-06-07  7:18 ` [PATCH net-next v13 13/13] Documentation: networking: document phy_link_topology Maxime Chevallier
2024-06-26  9:47 ` [PATCH net-next v13 00/13] Introduce PHY listing and link_topology tracking Marc Kleine-Budde
2024-06-26 10:01   ` Maxime Chevallier
2024-06-26 10:15     ` Marc Kleine-Budde

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=20240616180231.338c2e6c@fedora \
    --to=maxime.chevallier@bootlin.com \
    --cc=andrew@lunn.ch \
    --cc=atenart@kernel.org \
    --cc=christophe.leroy@csgroup.eu \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=f.fainelli@gmail.com \
    --cc=herve.codina@bootlin.com \
    --cc=hkallweit1@gmail.com \
    --cc=horms@kernel.org \
    --cc=jesse.brandeburg@intel.com \
    --cc=kabel@kernel.org \
    --cc=kory.maincent@bootlin.com \
    --cc=kuba@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=mwojtas@chromium.org \
    --cc=nathan@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=nicveronese@gmail.com \
    --cc=o.rempel@pengutronix.de \
    --cc=pabeni@redhat.com \
    --cc=piergiorgio.beruto@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).