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
Delegated to: David Miller
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(-)

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);