Message ID | 20220513114613.762810-1-festevam@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | f2ef6f7539c68c6bd6c32323d8845ee102b7c450 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next,1/2] net: phy: micrel: Allow probing without .driver_data | expand |
On Fri, May 13, 2022 at 08:46:12AM -0300, Fabio Estevam wrote: > From: Fabio Estevam <festevam@denx.de> > > Currently, if the .probe element is present in the phy_driver structure > and the .driver_data is not, a NULL pointer dereference happens. > > Allow passing .probe without .driver_data by inserting NULL checks > for priv->type. > > Signed-off-by: Fabio Estevam <festevam@denx.de> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew
Hello: This series was applied to netdev/net-next.git (master) by Jakub Kicinski <kuba@kernel.org>: On Fri, 13 May 2022 08:46:12 -0300 you wrote: > From: Fabio Estevam <festevam@denx.de> > > Currently, if the .probe element is present in the phy_driver structure > and the .driver_data is not, a NULL pointer dereference happens. > > Allow passing .probe without .driver_data by inserting NULL checks > for priv->type. > > [...] Here is the summary with links: - [net-next,1/2] net: phy: micrel: Allow probing without .driver_data https://git.kernel.org/netdev/net-next/c/f2ef6f7539c6 - [net-next,2/2] net: phy: micrel: Use the kszphy probe/suspend/resume https://git.kernel.org/netdev/net-next/c/8e6004dfecb7 You are awesome, thank you!
diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c index c34a93403d1e..5e356e23c1b7 100644 --- a/drivers/net/phy/micrel.c +++ b/drivers/net/phy/micrel.c @@ -520,7 +520,7 @@ static int kszphy_config_reset(struct phy_device *phydev) } } - if (priv->led_mode >= 0) + if (priv->type && priv->led_mode >= 0) kszphy_setup_led(phydev, priv->type->led_mode_reg, priv->led_mode); return 0; @@ -536,10 +536,10 @@ static int kszphy_config_init(struct phy_device *phydev) type = priv->type; - if (type->has_broadcast_disable) + if (type && type->has_broadcast_disable) kszphy_broadcast_disable(phydev); - if (type->has_nand_tree_disable) + if (type && type->has_nand_tree_disable) kszphy_nand_tree_disable(phydev); return kszphy_config_reset(phydev); @@ -1730,7 +1730,7 @@ static int kszphy_probe(struct phy_device *phydev) priv->type = type; - if (type->led_mode_reg) { + if (type && type->led_mode_reg) { ret = of_property_read_u32(np, "micrel,led-mode", &priv->led_mode); if (ret) @@ -1751,7 +1751,8 @@ static int kszphy_probe(struct phy_device *phydev) unsigned long rate = clk_get_rate(clk); bool rmii_ref_clk_sel_25_mhz; - priv->rmii_ref_clk_sel = type->has_rmii_ref_clk_sel; + if (type) + priv->rmii_ref_clk_sel = type->has_rmii_ref_clk_sel; rmii_ref_clk_sel_25_mhz = of_property_read_bool(np, "micrel,rmii-reference-clock-select-25-mhz");