From: Kunihiko Hayashi Date: Mon, 13 May 2019 06:41:45 +0000 (+0900) Subject: net: phy: realtek: Replace phy functions with non-locked version in rtl8211e_config_i... X-Git-Tag: v5.4-rc1~1003^2~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=dffe7d2e04670ff98e4dacf258df30446e2e80d4;p=platform%2Fkernel%2Flinux-rpi.git net: phy: realtek: Replace phy functions with non-locked version in rtl8211e_config_init() 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 Reviewed-by: Andrew Lunn Signed-off-by: David S. Miller --- diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c index 4988ccea684a..a669945eb829 100644 --- a/drivers/net/phy/realtek.c +++ b/drivers/net/phy/realtek.c @@ -217,12 +217,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);