From: Lukas Wunner Date: Thu, 12 May 2022 08:42:07 +0000 (+0200) Subject: net: phy: smsc: Cope with hot-removal in interrupt handler X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=1e7b81edebc1466d4154c5e716eb87468f3eeee2;p=linux.git net: phy: smsc: Cope with hot-removal in interrupt handler If reading the Interrupt Source Flag register fails with -ENODEV, then the PHY has been hot-removed and the correct response is to bail out instead of throwing a WARN splat and attempting to suspend the PHY. The PHY should be stopped in due course anyway as the kernel asynchronously tears down the device. Tested-by: Oleksij Rempel # LAN9514/9512/9500 Tested-by: Ferry Toth # LAN9514 Signed-off-by: Lukas Wunner Reviewed-by: Andrew Lunn Signed-off-by: David S. Miller --- diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c index e0eadea4b4b5b..1b54684b68a07 100644 --- a/drivers/net/phy/smsc.c +++ b/drivers/net/phy/smsc.c @@ -91,7 +91,9 @@ static irqreturn_t smsc_phy_handle_interrupt(struct phy_device *phydev) irq_status = phy_read(phydev, MII_LAN83C185_ISF); if (irq_status < 0) { - phy_error(phydev); + if (irq_status != -ENODEV) + phy_error(phydev); + return IRQ_NONE; }