Skip to content
  • Josef Bacik's avatar
    inet: reset tb->fastreuseport when adding a reuseport sk · 637bc8bb
    Josef Bacik authored
    
    
    If we have non reuseport sockets on a tb we will set tb->fastreuseport to 0 and
    never set it again.  Which means that in the future if we end up adding a bunch
    of reuseport sk's to that tb we'll have to do the expensive scan every time.
    Instead add the ipv4/ipv6 saddr fields to the bind bucket, as well as the family
    so we know what comparison to make, and the ipv6 only setting so we can make
    sure to compare with new sockets appropriately.  Once one sk has made it onto
    the list we know that there are no potential bind conflicts on the owners list
    that match that sk's rcv_addr.  So copy the sk's information into our bind
    bucket and set tb->fastruseport to FASTREUSESOCK_STRICT so we know we have to do
    an extra check for subsequent reuseport sockets and skip the expensive bind
    conflict check.
    
    Signed-off-by: default avatarJosef Bacik <jbacik@fb.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    637bc8bb