> diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c > index e2fa56b92..b5e114bed 100644 > --- a/drivers/net/usb/ax88179_178a.c > +++ b/drivers/net/usb/ax88179_178a.c > @@ -185,8 +185,9 @@ static const struct { > {7, 0xcc, 0x4c, 0x18, 8}, > }; > > -static int __ax88179_read_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index, > - u16 size, void *data, int in_pm) > +static int __must_check __ax88179_read_cmd(struct usbnet *dev, u8 cmd, > + u16 value, u16 index, u16 size, > + void *data, int in_pm) > { > int ret; > int (*fn)(struct usbnet *, u8, u8, u16, u16, void *, u16); > @@ -201,9 +202,12 @@ static int __ax88179_read_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index, > ret = fn(dev, cmd, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, > value, index, data, size); > > - if (unlikely(ret < 0)) > + if (unlikely(ret < size)) { > + ret = ret < 0 ? ret : -ENODATA; > + > netdev_warn(dev->net, "Failed to read reg index 0x%04x: %d\n", > index, ret); > + } > > return ret; It would be better to make __ax88179_read_cmd() return 0 on success instead of returning size on success. Non-standard returns lead to bugs. > @@ -1060,16 +1151,30 @@ static int ax88179_check_eeprom(struct usbnet *dev) > > jtimeout = jiffies + delay; > do { > - ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_SROM_CMD, > - 1, 1, &buf); > + ret = ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_SROM_CMD, > + 1, 1, &buf); > + > + if (ret < 0) { > + netdev_dbg(dev->net, > + "Failed to read SROM_CMD: %d\n", > + ret); > + return ret; > + } > > if (time_after(jiffies, jtimeout)) > return -EINVAL; The indenting here is wrong. Run scripts/checkpatch.pl on your patches. regards, dan carpenter