• Hannes Frederic Sowa's avatar
    vxlan: synchronously and race-free destruction of vxlan sockets · 0412bd93
    Hannes Frederic Sowa authored
    Due to the fact that the udp socket is destructed asynchronously in a
    work queue, we have some nondeterministic behavior during shutdown of
    vxlan tunnels and creating new ones. Fix this by keeping the destruction
    process synchronous in regards to the user space process so IFF_UP can
    be reliably set.
    
    udp_tunnel_sock_release destroys vs->sock->sk if reference counter
    indicates so. We expect to have the same lifetime of vxlan_sock and
    vxlan_sock->sock->sk even in fast paths with only rcu locks held. So
    only destruct the whole socket after we can be sure it cannot be found
    by searching vxlan_net->sock_list.
    
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Cc: Jiri Benc <jbenc@redhat.com>
    Cc: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: default avatarHannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    0412bd93
vxlan.c 84.3 KB