From: huhai <redacted>
mchp_rds_ptp_probe() may return NULL when CONFIG_PTP_1588_CLOCK is disabled.
lan887x_phy_init() only checks for an error pointer before using the returned
clock to configure the periodic output pin, which can result in a NULL
pointer dereference.
Handle the NULL return as PTP being unavailable and skip the event pin
configuration in that case.
Fixes: 8541fc12edcd ("net: phy: microchip_t1: Enable pin out specific to lan887x phy for PEROUT signal")
Signed-off-by: huhai <redacted>
---
drivers/net/phy/microchip_t1.c | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/drivers/net/phy/microchip_t1.c b/drivers/net/phy/microchip_t1.c
index 3292b2235c8f..e38d20bf6aa4 100644
--- a/drivers/net/phy/microchip_t1.c
+++ b/drivers/net/phy/microchip_t1.c
@@ -1285,14 +1285,16 @@ static int lan887x_phy_init(struct phy_device *phydev)
if (IS_ERR(priv->clock))
return PTR_ERR(priv->clock);
- /* Enable pin mux for EVT */
- phy_modify_mmd(phydev, MDIO_MMD_VEND1,
- LAN887X_MX_CHIP_TOP_REG_CONTROL1,
- LAN887X_MX_CHIP_TOP_REG_CONTROL1_EVT_EN,
- LAN887X_MX_CHIP_TOP_REG_CONTROL1_EVT_EN);
-
- /* Initialize pin numbers specific to PEROUT */
- priv->clock->event_pin = 3;
+ if (priv->clock) {
+ /* Enable pin mux for EVT */
+ phy_modify_mmd(phydev, MDIO_MMD_VEND1,
+ LAN887X_MX_CHIP_TOP_REG_CONTROL1,
+ LAN887X_MX_CHIP_TOP_REG_CONTROL1_EVT_EN,
+ LAN887X_MX_CHIP_TOP_REG_CONTROL1_EVT_EN);
+
+ /* Initialize pin numbers specific to PEROUT */
+ priv->clock->event_pin = 3;
+ }
priv->init_done = true;
}--
2.40.1