Re: [PATCH net 07/10] net: ethoc: move setting of netops to fix crash
From: Maxime Chevallier
Date: Tue Oct 13 2026 - 15:02:38 EST
On 10/8/26 04:26, David Yang wrote:
> ethoc_probe() calls ethoc_mdio_probe(), which connects the PHY,
> before netdev->netdev_ops is assigned. phy_attach_direct() ->
> phy_link_topo_add_phy() reads dev->netdev_ops through
> netdev_need_ops_lock() since the commit in question, so probing crashes
> with a NULL pointer dereference when CONFIG_NET_SHAPER is enabled.
>
> Assign netdev_ops before the PHY attach, as was done for emac in commit
> 7c9f391ec89c ("net: emac: move setting of netops to fix crash").
>
> Fixes: ded86da4bbb7 ("net: ethtool: relax ethnl_req_get_phydev() locking assertion")
> Signed-off-by: David Yang <mmyangfl@xxxxxxxxx>
Reviewed-by: Maxime Chevallier <maxime.chevallier@xxxxxxxxxxx>
Thanks,
Maxime
> ---
> drivers/net/ethernet/ethoc.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/ethoc.c b/drivers/net/ethernet/ethoc.c
> index 0c418557264c..e5b7df43e8f6 100644
> --- a/drivers/net/ethernet/ethoc.c
> +++ b/drivers/net/ethernet/ethoc.c
> @@ -1211,6 +1211,8 @@ static int ethoc_probe(struct platform_device *pdev)
> goto free3;
> }
>
> + netdev->netdev_ops = ðoc_netdev_ops;
> +
> ret = ethoc_mdio_probe(netdev);
> if (ret) {
> dev_err(&netdev->dev, "failed to probe MDIO bus\n");
> @@ -1218,7 +1220,6 @@ static int ethoc_probe(struct platform_device *pdev)
> }
>
> /* setup the net_device structure */
> - netdev->netdev_ops = ðoc_netdev_ops;
> netdev->watchdog_timeo = ETHOC_TIMEOUT;
> netdev->features |= 0;
> netdev->ethtool_ops = ðoc_ethtool_ops;