Commit 5bb8fc0d authored by Johan Hovold's avatar Johan Hovold Committed by David S. Miller

net: phy: micrel: fix config_intr error handling

Make sure never to update the control register with random data (an
error code) by checking the return value after reading it.
Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c88c7d32
...@@ -122,6 +122,8 @@ static int kszphy_config_intr(struct phy_device *phydev) ...@@ -122,6 +122,8 @@ static int kszphy_config_intr(struct phy_device *phydev)
/* set the interrupt pin active low */ /* set the interrupt pin active low */
temp = phy_read(phydev, MII_KSZPHY_CTRL); temp = phy_read(phydev, MII_KSZPHY_CTRL);
if (temp < 0)
return temp;
temp &= ~KSZPHY_CTRL_INT_ACTIVE_HIGH; temp &= ~KSZPHY_CTRL_INT_ACTIVE_HIGH;
phy_write(phydev, MII_KSZPHY_CTRL, temp); phy_write(phydev, MII_KSZPHY_CTRL, temp);
rc = kszphy_set_interrupt(phydev); rc = kszphy_set_interrupt(phydev);
...@@ -134,6 +136,8 @@ static int ksz9021_config_intr(struct phy_device *phydev) ...@@ -134,6 +136,8 @@ static int ksz9021_config_intr(struct phy_device *phydev)
/* set the interrupt pin active low */ /* set the interrupt pin active low */
temp = phy_read(phydev, MII_KSZPHY_CTRL); temp = phy_read(phydev, MII_KSZPHY_CTRL);
if (temp < 0)
return temp;
temp &= ~KSZ9021_CTRL_INT_ACTIVE_HIGH; temp &= ~KSZ9021_CTRL_INT_ACTIVE_HIGH;
phy_write(phydev, MII_KSZPHY_CTRL, temp); phy_write(phydev, MII_KSZPHY_CTRL, temp);
rc = kszphy_set_interrupt(phydev); rc = kszphy_set_interrupt(phydev);
...@@ -146,6 +150,8 @@ static int ks8737_config_intr(struct phy_device *phydev) ...@@ -146,6 +150,8 @@ static int ks8737_config_intr(struct phy_device *phydev)
/* set the interrupt pin active low */ /* set the interrupt pin active low */
temp = phy_read(phydev, MII_KSZPHY_CTRL); temp = phy_read(phydev, MII_KSZPHY_CTRL);
if (temp < 0)
return temp;
temp &= ~KS8737_CTRL_INT_ACTIVE_HIGH; temp &= ~KS8737_CTRL_INT_ACTIVE_HIGH;
phy_write(phydev, MII_KSZPHY_CTRL, temp); phy_write(phydev, MII_KSZPHY_CTRL, temp);
rc = kszphy_set_interrupt(phydev); rc = kszphy_set_interrupt(phydev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment