aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/socket.c
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2007-10-12 21:27:47 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2007-10-12 21:27:47 -0400
commitb981d8b3f5e008ff10d993be633ad00564fc22cd (patch)
treee292dc07b22308912cf6a58354a608b9e5e8e1fd /net/tipc/socket.c
parentb11d2127c4893a7315d1e16273bc8560049fa3ca (diff)
parent2b9e0aae1d50e880c58d46788e5e3ebd89d75d62 (diff)
Merge master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts: drivers/macintosh/adbhid.c
Diffstat (limited to 'net/tipc/socket.c')
-rw-r--r--net/tipc/socket.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index 4a8f37f48764..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 */
165static int tipc_create(struct socket *sock, int protocol) 165static 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;
@@ -1629,8 +1632,8 @@ static struct proto_ops msg_ops = {
1629 .getsockopt = getsockopt, 1632 .getsockopt = getsockopt,
1630 .sendmsg = send_msg, 1633 .sendmsg = send_msg,
1631 .recvmsg = recv_msg, 1634 .recvmsg = recv_msg,
1632 .mmap = sock_no_mmap, 1635 .mmap = sock_no_mmap,
1633 .sendpage = sock_no_sendpage 1636 .sendpage = sock_no_sendpage
1634}; 1637};
1635 1638
1636static struct proto_ops packet_ops = { 1639static struct proto_ops packet_ops = {
@@ -1650,8 +1653,8 @@ static struct proto_ops packet_ops = {
1650 .getsockopt = getsockopt, 1653 .getsockopt = getsockopt,
1651 .sendmsg = send_packet, 1654 .sendmsg = send_packet,
1652 .recvmsg = recv_msg, 1655 .recvmsg = recv_msg,
1653 .mmap = sock_no_mmap, 1656 .mmap = sock_no_mmap,
1654 .sendpage = sock_no_sendpage 1657 .sendpage = sock_no_sendpage
1655}; 1658};
1656 1659
1657static struct proto_ops stream_ops = { 1660static struct proto_ops stream_ops = {
@@ -1671,8 +1674,8 @@ static struct proto_ops stream_ops = {
1671 .getsockopt = getsockopt, 1674 .getsockopt = getsockopt,
1672 .sendmsg = send_stream, 1675 .sendmsg = send_stream,
1673 .recvmsg = recv_stream, 1676 .recvmsg = recv_stream,
1674 .mmap = sock_no_mmap, 1677 .mmap = sock_no_mmap,
1675 .sendpage = sock_no_sendpage 1678 .sendpage = sock_no_sendpage
1676}; 1679};
1677 1680
1678static struct net_proto_family tipc_family_ops = { 1681static struct net_proto_family tipc_family_ops = {