summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhil Elwell <phil@raspberrypi.org>2018-04-11 10:59:17 +0100
committerDavid S. Miller <davem@davemloft.net>2018-04-11 10:30:42 -0400
commit4bfc33807a9a02764bdd1e42e794b3b401240f27 (patch)
tree3b52134fb2776c37657f153c275a9d264a5ba9f5
parenta43cced9a348901f9015f4730b70b69e7c41a9c9 (diff)
lan78xx: Correctly indicate invalid OTP
lan78xx_read_otp tries to return -EINVAL in the event of invalid OTP content, but the value gets overwritten before it is returned and the read goes ahead anyway. Make the read conditional as it should be and preserve the error code. Fixes: 55d7de9de6c3 ("Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver") Signed-off-by: Phil Elwell <phil@raspberrypi.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/usb/lan78xx.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
index aff105f5f58c..145bb7cbf5b2 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
@@ -928,7 +928,8 @@ static int lan78xx_read_otp(struct lan78xx_net *dev, u32 offset,
offset += 0x100;
else
ret = -EINVAL;
- ret = lan78xx_read_raw_otp(dev, offset, length, data);
+ if (!ret)
+ ret = lan78xx_read_raw_otp(dev, offset, length, data);
}
return ret;