diff options
Diffstat (limited to 'net/ipv4/udp_tunnel.c')
-rw-r--r-- | net/ipv4/udp_tunnel.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/net/ipv4/udp_tunnel.c b/net/ipv4/udp_tunnel.c index 4e2837476967..933ea903f7b8 100644 --- a/net/ipv4/udp_tunnel.c +++ b/net/ipv4/udp_tunnel.c | |||
@@ -15,12 +15,10 @@ int udp_sock_create4(struct net *net, struct udp_port_cfg *cfg, | |||
15 | struct socket *sock = NULL; | 15 | struct socket *sock = NULL; |
16 | struct sockaddr_in udp_addr; | 16 | struct sockaddr_in udp_addr; |
17 | 17 | ||
18 | err = sock_create_kern(&init_net, AF_INET, SOCK_DGRAM, 0, &sock); | 18 | err = sock_create_kern(net, AF_INET, SOCK_DGRAM, 0, &sock); |
19 | if (err < 0) | 19 | if (err < 0) |
20 | goto error; | 20 | goto error; |
21 | 21 | ||
22 | sk_change_net(sock->sk, net); | ||
23 | |||
24 | udp_addr.sin_family = AF_INET; | 22 | udp_addr.sin_family = AF_INET; |
25 | udp_addr.sin_addr = cfg->local_ip; | 23 | udp_addr.sin_addr = cfg->local_ip; |
26 | udp_addr.sin_port = cfg->local_udp_port; | 24 | udp_addr.sin_port = cfg->local_udp_port; |
@@ -47,7 +45,7 @@ int udp_sock_create4(struct net *net, struct udp_port_cfg *cfg, | |||
47 | error: | 45 | error: |
48 | if (sock) { | 46 | if (sock) { |
49 | kernel_sock_shutdown(sock, SHUT_RDWR); | 47 | kernel_sock_shutdown(sock, SHUT_RDWR); |
50 | sk_release_kernel(sock->sk); | 48 | sock_release(sock); |
51 | } | 49 | } |
52 | *sockp = NULL; | 50 | *sockp = NULL; |
53 | return err; | 51 | return err; |
@@ -101,7 +99,7 @@ void udp_tunnel_sock_release(struct socket *sock) | |||
101 | { | 99 | { |
102 | rcu_assign_sk_user_data(sock->sk, NULL); | 100 | rcu_assign_sk_user_data(sock->sk, NULL); |
103 | kernel_sock_shutdown(sock, SHUT_RDWR); | 101 | kernel_sock_shutdown(sock, SHUT_RDWR); |
104 | sk_release_kernel(sock->sk); | 102 | sock_release(sock); |
105 | } | 103 | } |
106 | EXPORT_SYMBOL_GPL(udp_tunnel_sock_release); | 104 | EXPORT_SYMBOL_GPL(udp_tunnel_sock_release); |
107 | 105 | ||