diff mbox series

[net] net: phy: realtek: Replace phy functions with non-locked version in rtl8211e_config_init()

Message ID 1557729705-6443-1-git-send-email-hayashi.kunihiko@socionext.com
State Accepted
Commit dffe7d2e04670ff98e4dacf258df30446e2e80d4
Headers show
Series [net] net: phy: realtek: Replace phy functions with non-locked version in rtl8211e_config_init() | expand

Commit Message

Kunihiko Hayashi May 13, 2019, 6:41 a.m. UTC
After calling phy_select_page() and until calling phy_restore_page(),
the mutex 'mdio_lock' is already locked, so the driver should use
non-locked version of phy functions. Or there will be a deadlock with
'mdio_lock'.

This replaces phy functions called from rtl8211e_config_init() to avoid
the deadlock issue.

Fixes: f81dadbcf7fd ("net: phy: realtek: Add rtl8211e rx/tx delays config")
Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>

---
 drivers/net/phy/realtek.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

-- 
2.7.4

Comments

Andrew Lunn May 13, 2019, 12:50 p.m. UTC | #1
On Mon, May 13, 2019 at 03:41:45PM +0900, Kunihiko Hayashi wrote:
> After calling phy_select_page() and until calling phy_restore_page(),

> the mutex 'mdio_lock' is already locked, so the driver should use

> non-locked version of phy functions. Or there will be a deadlock with

> 'mdio_lock'.

> 

> This replaces phy functions called from rtl8211e_config_init() to avoid

> the deadlock issue.

> 

> Fixes: f81dadbcf7fd ("net: phy: realtek: Add rtl8211e rx/tx delays config")

> Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>


Reviewed-by: Andrew Lunn <andrew@lunn.ch>


    Andrew
David Miller May 13, 2019, 4:11 p.m. UTC | #2
From: Andrew Lunn <andrew@lunn.ch>

Date: Mon, 13 May 2019 14:50:02 +0200

> On Mon, May 13, 2019 at 03:41:45PM +0900, Kunihiko Hayashi wrote:

>> After calling phy_select_page() and until calling phy_restore_page(),

>> the mutex 'mdio_lock' is already locked, so the driver should use

>> non-locked version of phy functions. Or there will be a deadlock with

>> 'mdio_lock'.

>> 

>> This replaces phy functions called from rtl8211e_config_init() to avoid

>> the deadlock issue.

>> 

>> Fixes: f81dadbcf7fd ("net: phy: realtek: Add rtl8211e rx/tx delays config")

>> Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>

> 

> Reviewed-by: Andrew Lunn <andrew@lunn.ch>


Applied.
diff mbox series

Patch

diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
index e1f7a60..61fc76f 100644
--- a/drivers/net/phy/realtek.c
+++ b/drivers/net/phy/realtek.c
@@ -233,12 +233,12 @@  static int rtl8211e_config_init(struct phy_device *phydev)
 	if (oldpage < 0)
 		goto err_restore_page;
 
-	ret = phy_write(phydev, RTL821x_EXT_PAGE_SELECT, 0xa4);
+	ret = __phy_write(phydev, RTL821x_EXT_PAGE_SELECT, 0xa4);
 	if (ret)
 		goto err_restore_page;
 
-	ret = phy_modify(phydev, 0x1c, RTL8211E_TX_DELAY | RTL8211E_RX_DELAY,
-			 val);
+	ret = __phy_modify(phydev, 0x1c, RTL8211E_TX_DELAY | RTL8211E_RX_DELAY,
+			   val);
 
 err_restore_page:
 	return phy_restore_page(phydev, oldpage, ret);