net: sctp: fix initialization of local source address on accepted ipv6 sockets
authorMatija Glavinic Pecotic <matija.glavinic-pecotic.ext@nsn.com>
Thu, 6 Feb 2014 07:30:10 +0000 (08:30 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 7 Feb 2014 05:18:06 +0000 (21:18 -0800)
commit  efe4208f47f907b86f528788da711e8ab9dea44d:
'ipv6: make lookups simpler and faster' broke initialization of local source
address on accepted ipv6 sockets. Before the mentioned commit receive address
was copied along with the contents of ipv6_pinfo in sctp_v6_create_accept_sk.
Now when it is moved, it has to be copied separately.

This also fixes lksctp's ipv6 regression in a sense that test_getname_v6, TC5 -
'getsockname on a connected server socket' now passes.

Signed-off-by: Matija Glavinic Pecotic <matija.glavinic-pecotic.ext@nsn.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/ipv6.c

index 0f6259a6a932c583f4450a6fe79ef46b7d184996..2b1738ef9394537589b403f7d299181e18fb2315 100644 (file)
@@ -662,6 +662,8 @@ static struct sock *sctp_v6_create_accept_sk(struct sock *sk,
         */
        sctp_v6_to_sk_daddr(&asoc->peer.primary_addr, newsk);
 
+       newsk->sk_v6_rcv_saddr = sk->sk_v6_rcv_saddr;
+
        sk_refcnt_debug_inc(newsk);
 
        if (newsk->sk_prot->init(newsk)) {