Hi David, one more small comment On 4/16/22 10:48, David Kahurani wrote: > Reads that are lesser than the requested size lead to uninit-value bugs. > In this particular case a variable which was supposed to be initialized > after a read is left uninitialized after a partial read. > > Qualify such reads as errors and handle them correctly and while at it > convert the reader functions to return zero on success for easier error > handling. > > Fixes: e2ca90c276e1 ("ax88179_178a: ASIX AX88179_178A USB 3.0/2.0 to > gigabit ethernet adapter driver") > Signed-off-by: David Kahurani > Reported-and-tested-by: syzbot+d3dbdf31fbe9d8f5f311@syzkaller.appspotmail.com > --- [code snip] > @@ -1295,6 +1439,7 @@ static int ax88179_led_setting(struct usbnet *dev) > static void ax88179_get_mac_addr(struct usbnet *dev) > { > u8 mac[ETH_ALEN]; > + int ret; > > memset(mac, 0, sizeof(mac)); > > @@ -1303,8 +1448,12 @@ static void ax88179_get_mac_addr(struct usbnet *dev) > netif_dbg(dev, ifup, dev->net, > "MAC address read from device tree"); > } else { > - ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_NODE_ID, ETH_ALEN, > - ETH_ALEN, mac); > + ret = ax88179_read_cmd(dev, AX_ACCESS_MAC, AX_NODE_ID, ETH_ALEN, > + ETH_ALEN, mac); > + > + if (ret) > + netdev_dbg(dev->net, "Failed to read NODE_ID: %d", ret); > + > netif_dbg(dev, ifup, dev->net, > "MAC address read from ASIX chip"); > } This message sequence is confusing. In case of ax88179_read_cmd() failure mac read from device actually failed, but message says, that it was successfully finished. With regards, Pavel Skripkin