Message ID | 20250321103502.1303539-1-maxime.chevallier@bootlin.com (mailing list archive) |
---|---|
State | New |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] net: stmmac: Call xpcs_config_eee_mult_fact() only when xpcs is present | expand |
On Fri, Mar 21, 2025 at 11:35:01AM +0100, Maxime Chevallier wrote: > Some dwmac variants such as dwmac_socfpga don't use xpcs but lynx_pcs. > > Don't call xpcs_config_eee_mult_fact() in this case, as this causes a > crash at init : > > Unable to handle kernel NULL pointer dereference at virtual address 00000039 when write > > [...] > > Call trace: > xpcs_config_eee_mult_fact from stmmac_pcs_setup+0x40/0x10c > stmmac_pcs_setup from stmmac_dvr_probe+0xc0c/0x1244 > stmmac_dvr_probe from socfpga_dwmac_probe+0x130/0x1bc > socfpga_dwmac_probe from platform_probe+0x5c/0xb0 > > Fixes: 060fb27060e8 ("net: stmmac: call xpcs_config_eee_mult_fact()") > Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Yes, I had noticed that but haven't had time to patch it, so thanks for submitting the patch. However, I think the code structure could be better in this function. Let's get the bug fixed, so: Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Thanks!
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c index 7c0a4046bbe3..836f2848dfeb 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c @@ -524,7 +524,8 @@ int stmmac_pcs_setup(struct net_device *ndev) if (ret) return dev_err_probe(priv->device, ret, "No xPCS found\n"); - xpcs_config_eee_mult_fact(xpcs, priv->plat->mult_fact_100ns); + if (xpcs) + xpcs_config_eee_mult_fact(xpcs, priv->plat->mult_fact_100ns); priv->hw->xpcs = xpcs;
Some dwmac variants such as dwmac_socfpga don't use xpcs but lynx_pcs. Don't call xpcs_config_eee_mult_fact() in this case, as this causes a crash at init : Unable to handle kernel NULL pointer dereference at virtual address 00000039 when write [...] Call trace: xpcs_config_eee_mult_fact from stmmac_pcs_setup+0x40/0x10c stmmac_pcs_setup from stmmac_dvr_probe+0xc0c/0x1244 stmmac_dvr_probe from socfpga_dwmac_probe+0x130/0x1bc socfpga_dwmac_probe from platform_probe+0x5c/0xb0 Fixes: 060fb27060e8 ("net: stmmac: call xpcs_config_eee_mult_fact()") Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com> --- This targets net-next as the blamed commit is also still in net-next. drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)