aboutsummaryrefslogtreecommitdiffstats
path: root/net/sctp/socket.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/sctp/socket.c')
-rw-r--r--net/sctp/socket.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index 4dcdabf56473..d370c945a757 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -3550,6 +3550,7 @@ SCTP_STATIC int sctp_do_peeloff(struct sctp_association *asoc,
3550 struct sock *sk = asoc->base.sk; 3550 struct sock *sk = asoc->base.sk;
3551 struct socket *sock; 3551 struct socket *sock;
3552 struct inet_sock *inetsk; 3552 struct inet_sock *inetsk;
3553 struct sctp_af *af;
3553 int err = 0; 3554 int err = 0;
3554 3555
3555 /* An association cannot be branched off from an already peeled-off 3556 /* An association cannot be branched off from an already peeled-off
@@ -3571,8 +3572,9 @@ SCTP_STATIC int sctp_do_peeloff(struct sctp_association *asoc,
3571 /* Make peeled-off sockets more like 1-1 accepted sockets. 3572 /* Make peeled-off sockets more like 1-1 accepted sockets.
3572 * Set the daddr and initialize id to something more random 3573 * Set the daddr and initialize id to something more random
3573 */ 3574 */
3575 af = sctp_get_af_specific(asoc->peer.primary_addr.sa.sa_family);
3576 af->to_sk_daddr(&asoc->peer.primary_addr, sk);
3574 inetsk = inet_sk(sock->sk); 3577 inetsk = inet_sk(sock->sk);
3575 inetsk->daddr = asoc->peer.primary_addr.v4.sin_addr.s_addr;
3576 inetsk->id = asoc->next_tsn ^ jiffies; 3578 inetsk->id = asoc->next_tsn ^ jiffies;
3577 3579
3578 *sockp = sock; 3580 *sockp = sock;