lan78xx: Correctly indicate invalid OTP
authorPhil Elwell <phil@raspberrypi.org>
Wed, 11 Apr 2018 09:59:17 +0000 (10:59 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 11 Apr 2018 14:30:42 +0000 (10:30 -0400)
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>
drivers/net/usb/lan78xx.c

index aff105f5f58c1c75dc8e4b63b46baf77e854bc31..145bb7cbf5b2bec5a6d5e0a81ce8079a81cbb23a 100644 (file)
@@ -928,7 +928,8 @@ static int lan78xx_read_otp(struct lan78xx_net *dev, u32 offset,
                        offset += 0x100;
                else
                        ret = -EINVAL;
                        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;
        }
 
        return ret;