On Tue, Oct 15, 2024 at 12:24 AM Oliver Neukum <oneukum@xxxxxxxx> wrote: > > On 14.10.24 21:59, Eric Dumazet wrote: > > > As diagnosed by John Sperbeck : > > > > This patch implies all ->bind() method took care of populating net->dev_addr ? > > > > Otherwise the following existing heuristic is no longer working > > > > // heuristic: "usb%d" for links we know are two-host, > > // else "eth%d" when there's reasonable doubt. userspace > > // can rename the link if it knows better. > > if ((dev->driver_info->flags & FLAG_ETHER) != 0 && > > ((dev->driver_info->flags & FLAG_POINTTOPOINT) == 0 || > > (net->dev_addr [0] & 0x02) == 0)) > > strscpy(net->name, "eth%d", sizeof(net->name)); > > > > Hi, > > you need to have a MAC to be an ethernet device, don't you? Before or after your patch, there was/is a MAC address, eventually random. The problem is about the test, which is now done while dev->dev_addr is full of zeroes, which is not a valid address, as shown by : diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c index e4775fb5a2f6..1a316773319f 100644 --- a/drivers/net/usb/usbnet.c +++ b/drivers/net/usb/usbnet.c @@ -1750,7 +1750,8 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod) // can rename the link if it knows better. if ((dev->driver_info->flags & FLAG_ETHER) != 0 && ((dev->driver_info->flags & FLAG_POINTTOPOINT) == 0 || - (net->dev_addr [0] & 0x02) == 0)) + (is_valid_ether_addr(net->dev_addr) && + (net->dev_addr [0] & 0x02) == 0))) strscpy(net->name, "eth%d", sizeof(net->name)); /* WLAN devices should always be named "wlan%d" */ if ((dev->driver_info->flags & FLAG_WLAN) != 0) To be clear : We are hitting a regression after your patch was backported to stable versions.