[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20231211120748.0eeb15cc@device.home>
Date: Mon, 11 Dec 2023 12:07:48 +0100
From: Maxime Chevallier <maxime.chevallier@...tlin.com>
To: Simon Horman <horms@...nel.org>
Cc: davem@...emloft.net, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org, thomas.petazzoni@...tlin.com, Andrew Lunn
<andrew@...n.ch>, Jakub Kicinski <kuba@...nel.org>, Eric Dumazet
<edumazet@...gle.com>, Paolo Abeni <pabeni@...hat.com>, Russell King
<linux@...linux.org.uk>, linux-arm-kernel@...ts.infradead.org, Christophe
Leroy <christophe.leroy@...roup.eu>, Herve Codina
<herve.codina@...tlin.com>, Florian Fainelli <f.fainelli@...il.com>, Heiner
Kallweit <hkallweit1@...il.com>, Vladimir Oltean <vladimir.oltean@....com>,
Köry Maincent <kory.maincent@...tlin.com>, Jesse Brandeburg
<jesse.brandeburg@...el.com>, Jonathan Corbet <corbet@....net>, Marek
Behún <kabel@...nel.org>, Piergiorgio Beruto
<piergiorgio.beruto@...il.com>, Oleksij Rempel <o.rempel@...gutronix.de>,
Nicolò Veronese <nicveronese@...il.com>
Subject: Re: [RFC PATCH net-next v3 07/13] net: ethtool: Introduce a command
to list PHYs on an interface
Hi Simon,
On Sat, 9 Dec 2023 17:04:57 +0000
Simon Horman <horms@...nel.org> wrote:
> On Fri, Dec 01, 2023 at 05:36:57PM +0100, Maxime Chevallier wrote:
> > As we have the ability to track the PHYs connected to a net_device
> > through the link_topology, we can expose this list to userspace. This
> > allows userspace to use these identifiers for phy-specific commands and
> > take the decision of which PHY to target by knowing the link topology.
> >
> > Add PHY_GET and PHY_DUMP, which can be a filtered DUMP operation to list
> > devices on only one interface.
> >
> > Signed-off-by: Maxime Chevallier <maxime.chevallier@...tlin.com>
>
> ...
>
> > diff --git a/net/ethtool/phy.c b/net/ethtool/phy.c
>
> ...
>
> > +static int ethnl_phy_dump_one_dev(struct sk_buff *skb, struct net_device *dev,
> > + struct netlink_callback *cb)
> > +{
> > + struct ethnl_phy_dump_ctx *ctx = (void *)cb->ctx;
> > + struct phy_req_info *pri = ctx->phy_req_info;
> > + struct phy_device_node *pdn;
> > + unsigned long index = 1;
> > + void *ehdr;
> > + int ret;
> > +
> > + pri->base.dev = dev;
> > +
> > + xa_for_each(&dev->link_topo.phys, index, pdn) {
> > + ehdr = ethnl_dump_put(skb, cb,
> > + ETHTOOL_MSG_PHY_GET_REPLY);
> > + if (!ehdr) {
> > + ret = -EMSGSIZE;
> > + break;
> > + }
> > +
> > + ret = ethnl_fill_reply_header(skb, dev,
> > + ETHTOOL_A_PHY_HEADER);
> > + if (ret < 0) {
> > + genlmsg_cancel(skb, ehdr);
> > + break;
> > + }
> > +
> > + memcpy(&pri->pdn, pdn, sizeof(*pdn));
> > + ret = ethnl_phy_fill_reply(&pri->base, skb);
> > +
> > + genlmsg_end(skb, ehdr);
> > + }
> > +
> > + return ret;
>
> Hi Maxime,
>
> I am unsure if this can happen (or if I flagged this before)
> but if the loop runs zero times then ret is uninitialised here.
>
> Flagged by Smatch
Ah true, let me also fix that in the next revision.
Thanks for the review,
Maxime
Powered by blists - more mailing lists