diff options
Diffstat (limited to 'net/tipc/socket.c')
-rw-r--r-- | net/tipc/socket.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/net/tipc/socket.c b/net/tipc/socket.c index 84110172031e..e36b4b5a5222 100644 --- a/net/tipc/socket.c +++ b/net/tipc/socket.c | |||
@@ -162,13 +162,16 @@ static void advance_queue(struct tipc_sock *tsock) | |||
162 | * | 162 | * |
163 | * Returns 0 on success, errno otherwise | 163 | * Returns 0 on success, errno otherwise |
164 | */ | 164 | */ |
165 | static int tipc_create(struct socket *sock, int protocol) | 165 | static int tipc_create(struct net *net, struct socket *sock, int protocol) |
166 | { | 166 | { |
167 | struct tipc_sock *tsock; | 167 | struct tipc_sock *tsock; |
168 | struct tipc_port *port; | 168 | struct tipc_port *port; |
169 | struct sock *sk; | 169 | struct sock *sk; |
170 | u32 ref; | 170 | u32 ref; |
171 | 171 | ||
172 | if (net != &init_net) | ||
173 | return -EAFNOSUPPORT; | ||
174 | |||
172 | if (unlikely(protocol != 0)) | 175 | if (unlikely(protocol != 0)) |
173 | return -EPROTONOSUPPORT; | 176 | return -EPROTONOSUPPORT; |
174 | 177 | ||
@@ -198,7 +201,7 @@ static int tipc_create(struct socket *sock, int protocol) | |||
198 | return -EPROTOTYPE; | 201 | return -EPROTOTYPE; |
199 | } | 202 | } |
200 | 203 | ||
201 | sk = sk_alloc(AF_TIPC, GFP_KERNEL, &tipc_proto, 1); | 204 | sk = sk_alloc(net, AF_TIPC, GFP_KERNEL, &tipc_proto, 1); |
202 | if (!sk) { | 205 | if (!sk) { |
203 | tipc_deleteport(ref); | 206 | tipc_deleteport(ref); |
204 | return -ENOMEM; | 207 | return -ENOMEM; |
@@ -1372,7 +1375,7 @@ static int accept(struct socket *sock, struct socket *newsock, int flags) | |||
1372 | } | 1375 | } |
1373 | buf = skb_peek(&sock->sk->sk_receive_queue); | 1376 | buf = skb_peek(&sock->sk->sk_receive_queue); |
1374 | 1377 | ||
1375 | res = tipc_create(newsock, 0); | 1378 | res = tipc_create(sock->sk->sk_net, newsock, 0); |
1376 | if (!res) { | 1379 | if (!res) { |
1377 | struct tipc_sock *new_tsock = tipc_sk(newsock->sk); | 1380 | struct tipc_sock *new_tsock = tipc_sk(newsock->sk); |
1378 | struct tipc_portid id; | 1381 | struct tipc_portid id; |