Skip to content
  • Ilya Maximets's avatar
    455302d1
    xdp: fix hang while unregistering device bound to xdp socket · 455302d1
    Ilya Maximets authored
    
    
    Device that bound to XDP socket will not have zero refcount until the
    userspace application will not close it. This leads to hang inside
    'netdev_wait_allrefs()' if device unregistering requested:
    
      # ip link del p1
      < hang on recvmsg on netlink socket >
    
      # ps -x | grep ip
      5126  pts/0    D+   0:00 ip link del p1
    
      # journalctl -b
    
      Jun 05 07:19:16 kernel:
      unregister_netdevice: waiting for p1 to become free. Usage count = 1
    
      Jun 05 07:19:27 kernel:
      unregister_netdevice: waiting for p1 to become free. Usage count = 1
      ...
    
    Fix that by implementing NETDEV_UNREGISTER event notification handler
    to properly clean up all the resources and unref device.
    
    This should also allow socket killing via ss(8) utility.
    
    Fixes: 965a9909 ("xsk: add support for bind for Rx")
    Signed-off-by: default avatarIlya Maximets <i.maximets@samsung.com>
    Acked-by: default avatarJonathan Lemon <jonathan.lemon@gmail.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    455302d1
    xdp: fix hang while unregistering device bound to xdp socket
    Ilya Maximets authored
    
    
    Device that bound to XDP socket will not have zero refcount until the
    userspace application will not close it. This leads to hang inside
    'netdev_wait_allrefs()' if device unregistering requested:
    
      # ip link del p1
      < hang on recvmsg on netlink socket >
    
      # ps -x | grep ip
      5126  pts/0    D+   0:00 ip link del p1
    
      # journalctl -b
    
      Jun 05 07:19:16 kernel:
      unregister_netdevice: waiting for p1 to become free. Usage count = 1
    
      Jun 05 07:19:27 kernel:
      unregister_netdevice: waiting for p1 to become free. Usage count = 1
      ...
    
    Fix that by implementing NETDEV_UNREGISTER event notification handler
    to properly clean up all the resources and unref device.
    
    This should also allow socket killing via ss(8) utility.
    
    Fixes: 965a9909 ("xsk: add support for bind for Rx")
    Signed-off-by: default avatarIlya Maximets <i.maximets@samsung.com>
    Acked-by: default avatarJonathan Lemon <jonathan.lemon@gmail.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
Loading