PHY-less and fixed-link configurations retain a negative PHY address. Avoid shifting by that value while removing the device, and serialize the bitmap update with PHY discovery. Fixes: d6f144830bdf ("ibm/emac: fix improper cleanup when device is removed to allow re-bind") Signed-off-by: Rosen Penev --- drivers/net/ethernet/ibm/emac/core.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/ibm/emac/core.c b/drivers/net/ethernet/ibm/emac/core.c index 4124a90b18c4..0f534af2f3de 100644 --- a/drivers/net/ethernet/ibm/emac/core.c +++ b/drivers/net/ethernet/ibm/emac/core.c @@ -3240,8 +3240,11 @@ static void emac_remove(struct platform_device *ofdev) if (emac_has_feature(dev, EMAC_FTR_HAS_ZMII)) zmii_detach(dev->zmii_dev, dev->zmii_port); - busy_phy_map &= ~(1 << dev->phy.address); + mutex_lock(&emac_phy_map_lock); + if (dev->phy.address >= 0 && dev->phy.address < 32) + busy_phy_map &= ~BIT(dev->phy.address); DBG(dev, "busy_phy_map now %#x" NL, busy_phy_map); + mutex_unlock(&emac_phy_map_lock); mal_unregister_commac(dev->mal, &dev->commac); emac_put_deps(dev); -- 2.56.0