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

From: Maxime Chevallier
Date: Tue Sep 10 2024 - 13:24:30 EST


Hello Eric,

On Tue, 10 Sep 2024 18:41:03 +0200
Eric Dumazet <edumazet@xxxxxxxxxx> wrote:

> > +int ethnl_phy_doit(struct sk_buff *skb, struct genl_info *info)
> > +{
> > + struct phy_req_info req_info = {};
> > + struct nlattr **tb = info->attrs;
> > + struct sk_buff *rskb;
> > + void *reply_payload;
> > + int reply_len;
> > + int ret;
> > +
> > + ret = ethnl_parse_header_dev_get(&req_info.base,
> > + tb[ETHTOOL_A_PHY_HEADER],
> > + genl_info_net(info), info->extack,
> > + true);
> > + if (ret < 0)
> > + return ret;
> > +
> > + rtnl_lock();
> > +
> > + ret = ethnl_phy_parse_request(&req_info.base, tb, info->extack);
> > + if (ret < 0)
> > + goto err_unlock_rtnl;
> > +
> > + /* No PHY, return early */
>
> I got a syzbot report here.

I seem to have missed the report, sorry about that.

>
> Should we fix this with :
>
> diff --git a/net/ethtool/phy.c b/net/ethtool/phy.c
> index 560dd039c6625ac0925a0f28c14ce77cf768b6a5..4ef7c6e32d1087dc71acb467f9cd2ab8faf4dc39
> 100644
> --- a/net/ethtool/phy.c
> +++ b/net/ethtool/phy.c
> @@ -164,7 +164,7 @@ int ethnl_phy_doit(struct sk_buff *skb, struct
> genl_info *info)
> goto err_unlock_rtnl;
>
> /* No PHY, return early */
> - if (!req_info.pdn->phy)
> + if (!req_info.pdn)
> goto err_unlock_rtnl;
>
> ret = ethnl_phy_reply_size(&req_info.base, info->extack);
>
>

Indeed that's the correct fix. Should I send it ? ( including
suggested-by/reported-by )

Thanks,

Maxime