net/fec: fix the .remove code
The .remove code is broken in several ways.
- mdiobus_unregister() is called twice for the same object in case of dual FEC
- phy_disconnect() is being called when the PHY is already disconnected
- the requested IRQ(s) are not freed
- fec_stop() is being called with the inteface already stopped
All of those lead to kernel crashes if the remove function is actually used.
Signed-off-by: Lothar Waßmann <[email protected]>
Tested-by: Shawn Guo <[email protected]>
Acked-by: Shawn Guo <[email protected]>
Signed-off-by: David S. Miller <[email protected]>