aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/socket.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/tipc/socket.c')
-rw-r--r--net/tipc/socket.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index 1198dddf72e8..15f6ce7bf868 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -2515,9 +2515,21 @@ static int tipc_socketpair(struct socket *sock1, struct socket *sock2)
2515{ 2515{
2516 struct tipc_sock *tsk2 = tipc_sk(sock2->sk); 2516 struct tipc_sock *tsk2 = tipc_sk(sock2->sk);
2517 struct tipc_sock *tsk1 = tipc_sk(sock1->sk); 2517 struct tipc_sock *tsk1 = tipc_sk(sock1->sk);
2518 2518 u32 onode = tipc_own_addr(sock_net(sock1->sk));
2519 tipc_sk_finish_conn(tsk1, tsk2->portid, 0); 2519
2520 tipc_sk_finish_conn(tsk2, tsk1->portid, 0); 2520 tsk1->peer.family = AF_TIPC;
2521 tsk1->peer.addrtype = TIPC_ADDR_ID;
2522 tsk1->peer.scope = TIPC_NODE_SCOPE;
2523 tsk1->peer.addr.id.ref = tsk2->portid;
2524 tsk1->peer.addr.id.node = onode;
2525 tsk2->peer.family = AF_TIPC;
2526 tsk2->peer.addrtype = TIPC_ADDR_ID;
2527 tsk2->peer.scope = TIPC_NODE_SCOPE;
2528 tsk2->peer.addr.id.ref = tsk1->portid;
2529 tsk2->peer.addr.id.node = onode;
2530
2531 tipc_sk_finish_conn(tsk1, tsk2->portid, onode);
2532 tipc_sk_finish_conn(tsk2, tsk1->portid, onode);
2521 return 0; 2533 return 0;
2522} 2534}
2523 2535
@@ -2529,7 +2541,7 @@ static const struct proto_ops msg_ops = {
2529 .release = tipc_release, 2541 .release = tipc_release,
2530 .bind = tipc_bind, 2542 .bind = tipc_bind,
2531 .connect = tipc_connect, 2543 .connect = tipc_connect,
2532 .socketpair = sock_no_socketpair, 2544 .socketpair = tipc_socketpair,
2533 .accept = sock_no_accept, 2545 .accept = sock_no_accept,
2534 .getname = tipc_getname, 2546 .getname = tipc_getname,
2535 .poll = tipc_poll, 2547 .poll = tipc_poll,