aboutsummaryrefslogtreecommitdiffstats
path: root/net/unix/af_unix.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/unix/af_unix.c')
-rw-r--r--net/unix/af_unix.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
index 2386090c3a16..10e73122c34c 100644
--- a/net/unix/af_unix.c
+++ b/net/unix/af_unix.c
@@ -594,7 +594,7 @@ static struct proto unix_proto = {
594 */ 594 */
595static struct lock_class_key af_unix_sk_receive_queue_lock_key; 595static struct lock_class_key af_unix_sk_receive_queue_lock_key;
596 596
597static struct sock * unix_create1(struct socket *sock) 597static struct sock * unix_create1(struct net *net, struct socket *sock)
598{ 598{
599 struct sock *sk = NULL; 599 struct sock *sk = NULL;
600 struct unix_sock *u; 600 struct unix_sock *u;
@@ -602,7 +602,7 @@ static struct sock * unix_create1(struct socket *sock)
602 if (atomic_read(&unix_nr_socks) >= 2*get_max_files()) 602 if (atomic_read(&unix_nr_socks) >= 2*get_max_files())
603 goto out; 603 goto out;
604 604
605 sk = sk_alloc(PF_UNIX, GFP_KERNEL, &unix_proto, 1); 605 sk = sk_alloc(net, PF_UNIX, GFP_KERNEL, &unix_proto, 1);
606 if (!sk) 606 if (!sk)
607 goto out; 607 goto out;
608 608
@@ -628,8 +628,11 @@ out:
628 return sk; 628 return sk;
629} 629}
630 630
631static int unix_create(struct socket *sock, int protocol) 631static int unix_create(struct net *net, struct socket *sock, int protocol)
632{ 632{
633 if (net != &init_net)
634 return -EAFNOSUPPORT;
635
633 if (protocol && protocol != PF_UNIX) 636 if (protocol && protocol != PF_UNIX)
634 return -EPROTONOSUPPORT; 637 return -EPROTONOSUPPORT;
635 638
@@ -655,7 +658,7 @@ static int unix_create(struct socket *sock, int protocol)
655 return -ESOCKTNOSUPPORT; 658 return -ESOCKTNOSUPPORT;
656 } 659 }
657 660
658 return unix_create1(sock) ? 0 : -ENOMEM; 661 return unix_create1(net, sock) ? 0 : -ENOMEM;
659} 662}
660 663
661static int unix_release(struct socket *sock) 664static int unix_release(struct socket *sock)
@@ -1039,7 +1042,7 @@ static int unix_stream_connect(struct socket *sock, struct sockaddr *uaddr,
1039 err = -ENOMEM; 1042 err = -ENOMEM;
1040 1043
1041 /* create new sock for complete connection */ 1044 /* create new sock for complete connection */
1042 newsk = unix_create1(NULL); 1045 newsk = unix_create1(sk->sk_net, NULL);
1043 if (newsk == NULL) 1046 if (newsk == NULL)
1044 goto out; 1047 goto out;
1045 1048