From: Xuanqiang Luo <redacted>
dp83640_probe() publishes its per-PHY state through phydev before
registering the PTP clock. If registration fails, the private data is
freed while phydev->mii_ts and phydev->priv still point to it, and
default_timestamp remains set.
Clear the published PHY state and reset the PTP clock pointer before
freeing the private data.
Fixes: 4715f65ffa05 ("net: Introduce a new MII time stamping interface.")
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Xuanqiang Luo <redacted>
---
drivers/net/phy/dp83640.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/phy/dp83640.c b/drivers/net/phy/dp83640.c
index ba39d30b74705..7aa5cf0a7bb03 100644
--- a/drivers/net/phy/dp83640.c
+++ b/drivers/net/phy/dp83640.c
@@ -1449,6 +1449,10 @@ static int dp83640_probe(struct phy_device *phydev)
no_register:
clock->chosen = NULL;
+ clock->ptp_clock = NULL;
+ phydev->default_timestamp = false;
+ phydev->mii_ts = NULL;
+ phydev->priv = NULL;
kfree(dp83640);
no_memory:
dp83640_clock_put(clock);
--
2.43.0