diff options
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/af_inet6.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index b5f96372ad73..21931c86e95b 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c | |||
@@ -81,7 +81,7 @@ static __inline__ struct ipv6_pinfo *inet6_sk_generic(struct sock *sk) | |||
81 | return (struct ipv6_pinfo *)(((u8 *)sk) + offset); | 81 | return (struct ipv6_pinfo *)(((u8 *)sk) + offset); |
82 | } | 82 | } |
83 | 83 | ||
84 | static int inet6_create(struct socket *sock, int protocol) | 84 | static int inet6_create(struct net *net, struct socket *sock, int protocol) |
85 | { | 85 | { |
86 | struct inet_sock *inet; | 86 | struct inet_sock *inet; |
87 | struct ipv6_pinfo *np; | 87 | struct ipv6_pinfo *np; |
@@ -94,6 +94,9 @@ static int inet6_create(struct socket *sock, int protocol) | |||
94 | int try_loading_module = 0; | 94 | int try_loading_module = 0; |
95 | int err; | 95 | int err; |
96 | 96 | ||
97 | if (net != &init_net) | ||
98 | return -EAFNOSUPPORT; | ||
99 | |||
97 | if (sock->type != SOCK_RAW && | 100 | if (sock->type != SOCK_RAW && |
98 | sock->type != SOCK_DGRAM && | 101 | sock->type != SOCK_DGRAM && |
99 | !inet_ehash_secret) | 102 | !inet_ehash_secret) |
@@ -159,7 +162,7 @@ lookup_protocol: | |||
159 | BUG_TRAP(answer_prot->slab != NULL); | 162 | BUG_TRAP(answer_prot->slab != NULL); |
160 | 163 | ||
161 | err = -ENOBUFS; | 164 | err = -ENOBUFS; |
162 | sk = sk_alloc(PF_INET6, GFP_KERNEL, answer_prot, 1); | 165 | sk = sk_alloc(net, PF_INET6, GFP_KERNEL, answer_prot, 1); |
163 | if (sk == NULL) | 166 | if (sk == NULL) |
164 | goto out; | 167 | goto out; |
165 | 168 | ||