Message ID | 20220629142149.1298-1-oneukum@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | usbnet: use each random address only once | expand |
On Wed, 29 Jun 2022 16:21:49 +0200 Oliver Neukum wrote: > Even random MACs should be unique to a device. > Get a new one each time it is used. > > This bug is as old as the driver. > > Signed-off-by: Oliver Neukum <oneukum@suse.com> > --- > drivers/net/usb/usbnet.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c > index 02b915b1e142..a90aece93f4a 100644 > --- a/drivers/net/usb/usbnet.c > +++ b/drivers/net/usb/usbnet.c > @@ -1797,8 +1797,11 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod) > } > > /* let userspace know we have a random address */ > - if (ether_addr_equal(net->dev_addr, node_id)) > + if (ether_addr_equal(net->dev_addr, node_id)) { > net->addr_assign_type = NET_ADDR_RANDOM; > + /* next device needs a new one*/ > + eth_random_addr(node_id); > + } > > if ((dev->driver_info->flags & FLAG_WLAN) != 0) > SET_NETDEV_DEVTYPE(net, &wlan_type); Why is that node_id thing even there, can we just delete it? Leave the address as all-zero and check if driver filled it in with: if (!is_valid_ether_addr(net->dev_addr)) eth_hw_addr_random(net->dev_addr);
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c index 02b915b1e142..a90aece93f4a 100644 --- a/drivers/net/usb/usbnet.c +++ b/drivers/net/usb/usbnet.c @@ -1797,8 +1797,11 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod) } /* let userspace know we have a random address */ - if (ether_addr_equal(net->dev_addr, node_id)) + if (ether_addr_equal(net->dev_addr, node_id)) { net->addr_assign_type = NET_ADDR_RANDOM; + /* next device needs a new one*/ + eth_random_addr(node_id); + } if ((dev->driver_info->flags & FLAG_WLAN) != 0) SET_NETDEV_DEVTYPE(net, &wlan_type);
Even random MACs should be unique to a device. Get a new one each time it is used. This bug is as old as the driver. Signed-off-by: Oliver Neukum <oneukum@suse.com> --- drivers/net/usb/usbnet.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)