diff --git a/drivers/net/bareudp.c b/drivers/net/bareudp.c index 890a0650d9cf..5ef841c85526 100644 --- a/drivers/net/bareudp.c +++ b/drivers/net/bareudp.c @@ -285,9 +285,8 @@ static void bareudp_sock_release(struct bareudp_dev *bareudp) { struct sock *sk; - sk = bareudp->sk; + sk = rtnl_dereference(bareudp->sk); rcu_assign_pointer(bareudp->sk, NULL); - synchronize_net(); udp_tunnel_sock_release(sk); } diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c index b36fad833724..e8ff03ed87dc 100644 --- a/drivers/net/geneve.c +++ b/drivers/net/geneve.c @@ -1032,7 +1032,6 @@ static void geneve_sock_release(struct geneve_dev *geneve) #endif rcu_assign_pointer(geneve->sock4, NULL); - synchronize_net(); __geneve_sock_release(gs4); #if IS_ENABLED(CONFIG_IPV6) @@ -2207,7 +2206,6 @@ static void geneve_unquiesce(struct geneve_dev *geneve, struct geneve_sock *gs4, if (gs6) rcu_assign_sk_user_data(gs6->sk, gs6); #endif - synchronize_net(); } static int geneve_changelink(struct net_device *dev, struct nlattr *tb[], diff --git a/drivers/net/vxlan/vxlan_core.c b/drivers/net/vxlan/vxlan_core.c index 00facbfabced..8c3885665b58 100644 --- a/drivers/net/vxlan/vxlan_core.c +++ b/drivers/net/vxlan/vxlan_core.c @@ -1515,7 +1515,6 @@ static void vxlan_sock_release(struct vxlan_dev *vxlan) #endif RCU_INIT_POINTER(vxlan->vn4_sock, NULL); - synchronize_net(); if (vxlan->cfg.flags & VXLAN_F_VNIFILTER) vxlan_vs_del_vnigrp(vxlan);