Patchwork [net] net: phy: marvell: Fix deadlock from wrong locking

login
register
mail settings
Submitter Andrew Lunn
Date Jan. 10, 2019, 11:15 p.m.
Message ID <1547162121-22240-1-git-send-email-andrew@lunn.ch>
Download mbox | patch
Permalink /patch/697363/
State New
Headers show

Comments

Andrew Lunn - Jan. 10, 2019, 11:15 p.m.
m88e1318_set_wol() takes the lock as part of phy_select_page(). Don't
take the lock again with phy_read(), use the unlocked __phy_read().

Fixes: 424ca4c55121 ("net: phy: marvell: fix paged access races")
Reported-by: Åke Rehnman <ake.rehnman@gmail.com>
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
 drivers/net/phy/marvell.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
David Miller - Jan. 16, 2019, 5:53 a.m.
From: Andrew Lunn <andrew@lunn.ch>
Date: Fri, 11 Jan 2019 00:15:21 +0100

> m88e1318_set_wol() takes the lock as part of phy_select_page(). Don't
> take the lock again with phy_read(), use the unlocked __phy_read().
> 
> Fixes: 424ca4c55121 ("net: phy: marvell: fix paged access races")
> Reported-by: Åke Rehnman <ake.rehnman@gmail.com>
> Signed-off-by: Andrew Lunn <andrew@lunn.ch>

Applied and queued up for -stable.

Patch

diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c
index ed07e706bb8f..e32a434004f2 100644
--- a/drivers/net/phy/marvell.c
+++ b/drivers/net/phy/marvell.c
@@ -1444,7 +1444,7 @@  static int m88e1318_set_wol(struct phy_device *phydev,
 		 * before enabling it if !phy_interrupt_is_valid()
 		 */
 		if (!phy_interrupt_is_valid(phydev))
-			phy_read(phydev, MII_M1011_IEVENT);
+			__phy_read(phydev, MII_M1011_IEVENT);
 
 		/* Enable the WOL interrupt */
 		err = __phy_modify(phydev, MII_88E1318S_PHY_CSIER, 0,