1. 13 Dec, 2021 1 commit
    • Marian Postevca's avatar
      usb: gadget: u_ether: fix race in setting MAC address in setup phase · 890d5b40
      Marian Postevca authored
      When listening for notifications through netlink of a new interface being
      registered, sporadically, it is possible for the MAC to be read as zero.
      The zero MAC address lasts a short period of time and then switches to a
      valid random MAC address.
      
      This causes problems for netd in Android, which assumes that the interface
      is malfunctioning and will not use it.
      
      In the good case we get this log:
      InterfaceController::getCfg() ifName usb0
       hwAddr 92:a8:f0:73:79:5b ipv4Addr 0.0.0.0 flags 0x1002
      
      In the error case we get these logs:
      InterfaceController::getCfg() ifName usb0
       hwAddr 00:00:00:00:00:00 ipv4Addr 0.0.0.0 flags 0x1002
      
      netd : interfaceGetCfg("usb0")
      netd : interfaceSetCfg() -> ServiceSpecificException
       (99, "[Cannot assign requested address] : ioctl() failed")
      
      The reason for the issue is the order in which the interface is setup,
      it is first registered through register_netdev() and after the MAC
      address is set.
      
      Fixed by first setting the MAC address of the net_device and after that
      calling register_netdev().
      
      Fixes: bcd4a1c4 ("usb: gadget: u_ether: construct with default values and add setters/getters")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMarian Postevca <posteuca@mutex.one>
      Link: https://lore.kernel.org/r/20211204214912.17627-1-posteuca@mutex.oneSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      890d5b40
  2. 12 Dec, 2021 14 commits
  3. 11 Dec, 2021 25 commits