Re: [RFC PATCH net-next v3 07/13] net: ethtool: Introduce a command to list PHYs on an interface
From: Maxime Chevallier <maxime.chevallier@bootlin.com>
Date: 2023-12-11 11:07:56
Also in:
linux-arm-kernel, lkml
Hi Simon, On Sat, 9 Dec 2023 17:04:57 +0000 Simon Horman [off-list ref] wrote:
On Fri, Dec 01, 2023 at 05:36:57PM +0100, Maxime Chevallier wrote:quoted
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@bootlin.com>...quoted
diff --git a/net/ethtool/phy.c b/net/ethtool/phy.c...quoted
+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