diff options
author | Michael Walle <michael@walle.cc> | 2020-01-30 18:44:51 +0100 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2020-01-31 07:46:11 -0800 |
commit | 2e1bf3a76576eebc787d8882c3f91fa4ec743efc (patch) | |
tree | 25853cebe19b720cfca998dcf2cd5d5a09270e16 /drivers/net | |
parent | 0e0daf6ac3be70608569262246f6dc33cb3f45fe (diff) | |
download | linux-2e1bf3a76576eebc787d8882c3f91fa4ec743efc.tar.gz linux-2e1bf3a76576eebc787d8882c3f91fa4ec743efc.tar.bz2 linux-2e1bf3a76576eebc787d8882c3f91fa4ec743efc.zip |
net: mii_timestamper: fix static allocation by PHY driver
If phydev->mii_ts is set by the PHY driver, it will always be
overwritten in of_mdiobus_register_phy(). Fix it. Also make sure, that
the unregister() doesn't do anything if the mii_timestamper was provided by
the PHY driver.
Fixes: 1dca22b18421 ("net: mdio: of: Register discovered MII time stampers.")
Signed-off-by: Michael Walle <michael@walle.cc>
Acked-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/phy/mii_timestamper.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/phy/mii_timestamper.c b/drivers/net/phy/mii_timestamper.c index 2f12c5d901df..b71b7456462d 100644 --- a/drivers/net/phy/mii_timestamper.c +++ b/drivers/net/phy/mii_timestamper.c @@ -111,6 +111,13 @@ void unregister_mii_timestamper(struct mii_timestamper *mii_ts) struct mii_timestamping_desc *desc; struct list_head *this; + /* mii_timestamper statically registered by the PHY driver won't use the + * register_mii_timestamper() and thus don't have ->device set. Don't + * try to unregister these. + */ + if (!mii_ts->device) + return; + mutex_lock(&tstamping_devices_lock); list_for_each(this, &mii_timestamping_devices) { desc = list_entry(this, struct mii_timestamping_desc, list); |