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, 23 Jun 2024 03:21:06 +0200	[thread overview]
Message-ID: <20240623032106.3e854124@fedora> (raw)
In-Reply-To: <20240613182613.5a11fca5@kernel.org>

Hello Jakub, Andrew, Russell,

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

After scratching my head maybe a bit too hard and re-reading the
replies from Andrew and Russell, I think there's indeed a problem. The
SFP case as described by Russell, from my understanding, leads me to
believe that the way PHY's are tracked by phy_link_topology is correct,
but that doesn't mean that what I try do to in this exact patch is
right.

After the phydev has been retrieved from the topology and stored in the
req_info, nothing guarantees that the PHY won't vanish between the
moment we get it here and the moment we use it in the ethnl command
handling (SFP removal being a good example, and probably(?) the only
problematic case).

A solution would be, as Russell says, to make sure we get the PHY and
do whatever we need to do with it with rtnl held. Fortunately that
shouldn't require significant rework of individual netlink commands
that use the phydev, as they already manipulate it while holding rtnl().

So, I'll ditch this idea of storing the phydev pointer in
the req_info, I'll just store the phy_index (if it was passed by user)
and grab the phy whenever we need to.

Let me know if you find some flaw in my analysis, and thanks for
spotting this.

Best regards,

Maxime

  parent reply	other threads:[~2024-06-23  1:21 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
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 [this message]
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=20240623032106.3e854124@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).