Andrew: my understanding is that a connected phy, maintains a reference to the relevant driver via phydev->mdio.dev.driver->owner, and such reference is dropped by phy_disconnect() via phy_detach().
So remove can invoked only after phy_disconnect
Does the above sounds reasonable/answer your question?
Yes, that does seem logical.
Reviewed-by: Andrew Lunn andrew@lunn.ch
Andrew