summaryrefslogtreecommitdiff
path: root/drivers/net/phy
diff options
context:
space:
mode:
authorJohan Hovold <johan@kernel.org>2014-11-11 22:00:12 +0300
committerDavid S. Miller <davem@davemloft.net>2014-11-12 21:55:36 +0300
commit8620546c39a379e3b0cc5210519c0bc22377b914 (patch)
treeaff73ee35f687ea56b7303ff67c47e8c6ac64b1f /drivers/net/phy
parent57a38effa598aa18ca707fdd844cda02e528afae (diff)
downloadlinux-8620546c39a379e3b0cc5210519c0bc22377b914.tar.xz
net: phy: micrel: add led-mode sanity check
Make sure never to update more than two bits when setting the led mode, something which could for example change the reference-clock setting. Signed-off-by: Johan Hovold <johan@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/phy')
-rw-r--r--drivers/net/phy/micrel.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
index 16135ac18bfe..1b3985cdc64c 100644
--- a/drivers/net/phy/micrel.c
+++ b/drivers/net/phy/micrel.c
@@ -173,6 +173,11 @@ static int kszphy_setup_led(struct phy_device *phydev,
if (of_property_read_u32(of_node, "micrel,led-mode", &val))
return 0;
+ if (val > 3) {
+ dev_err(&phydev->dev, "invalid led mode: 0x%02x\n", val);
+ return -EINVAL;
+ }
+
temp = phy_read(phydev, reg);
if (temp < 0)
return temp;