summaryrefslogtreecommitdiffstats
path: root/drivers/net/phy
diff options
context:
space:
mode:
authorJohan Hovold2014-11-11 20:00:12 +0100
committerDavid S. Miller2014-11-12 19:55:36 +0100
commit8620546c39a379e3b0cc5210519c0bc22377b914 (patch)
treeaff73ee35f687ea56b7303ff67c47e8c6ac64b1f /drivers/net/phy
parentnet: phy: micrel: disable broadcast for KSZ8081/KSZ8091 (diff)
downloadkernel-qcow2-linux-8620546c39a379e3b0cc5210519c0bc22377b914.tar.gz
kernel-qcow2-linux-8620546c39a379e3b0cc5210519c0bc22377b914.tar.xz
kernel-qcow2-linux-8620546c39a379e3b0cc5210519c0bc22377b914.zip
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;