[RFC PATCH net-next v3 07/13] net: ethtool: Introduce a command to list PHYs on an interface

Maxime Chevallier maxime.chevallier at bootlin.com
Mon Dec 11 03:07:48 PST 2023


Hi Simon,

On Sat, 9 Dec 2023 17:04:57 +0000
Simon Horman <horms at kernel.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 at bootlin.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




More information about the linux-arm-kernel mailing list