aboutsummaryrefslogtreecommitdiffstats
path: root/net/x25/af_x25.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/x25/af_x25.c')
-rw-r--r--net/x25/af_x25.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
index 479927cb45ca..2e9931571a4d 100644
--- a/net/x25/af_x25.c
+++ b/net/x25/af_x25.c
@@ -466,10 +466,10 @@ static struct proto x25_proto = {
466 .obj_size = sizeof(struct x25_sock), 466 .obj_size = sizeof(struct x25_sock),
467}; 467};
468 468
469static struct sock *x25_alloc_socket(void) 469static struct sock *x25_alloc_socket(struct net *net)
470{ 470{
471 struct x25_sock *x25; 471 struct x25_sock *x25;
472 struct sock *sk = sk_alloc(AF_X25, GFP_ATOMIC, &x25_proto, 1); 472 struct sock *sk = sk_alloc(net, AF_X25, GFP_ATOMIC, &x25_proto, 1);
473 473
474 if (!sk) 474 if (!sk)
475 goto out; 475 goto out;
@@ -485,17 +485,20 @@ out:
485 return sk; 485 return sk;
486} 486}
487 487
488static int x25_create(struct socket *sock, int protocol) 488static int x25_create(struct net *net, struct socket *sock, int protocol)
489{ 489{
490 struct sock *sk; 490 struct sock *sk;
491 struct x25_sock *x25; 491 struct x25_sock *x25;
492 int rc = -ESOCKTNOSUPPORT; 492 int rc = -ESOCKTNOSUPPORT;
493 493
494 if (net != &init_net)
495 return -EAFNOSUPPORT;
496
494 if (sock->type != SOCK_SEQPACKET || protocol) 497 if (sock->type != SOCK_SEQPACKET || protocol)
495 goto out; 498 goto out;
496 499
497 rc = -ENOMEM; 500 rc = -ENOMEM;
498 if ((sk = x25_alloc_socket()) == NULL) 501 if ((sk = x25_alloc_socket(net)) == NULL)
499 goto out; 502 goto out;
500 503
501 x25 = x25_sk(sk); 504 x25 = x25_sk(sk);
@@ -543,7 +546,7 @@ static struct sock *x25_make_new(struct sock *osk)
543 if (osk->sk_type != SOCK_SEQPACKET) 546 if (osk->sk_type != SOCK_SEQPACKET)
544 goto out; 547 goto out;
545 548
546 if ((sk = x25_alloc_socket()) == NULL) 549 if ((sk = x25_alloc_socket(osk->sk_net)) == NULL)
547 goto out; 550 goto out;
548 551
549 x25 = x25_sk(sk); 552 x25 = x25_sk(sk);