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