diff options
Diffstat (limited to 'net/sctp/ipv6.c')
| -rw-r--r-- | net/sctp/ipv6.c | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c index f3f0f4dc31d..391a245d520 100644 --- a/net/sctp/ipv6.c +++ b/net/sctp/ipv6.c @@ -326,9 +326,10 @@ static void sctp_v6_get_dst(struct sctp_transport *t, union sctp_addr *saddr,  	 */  	rcu_read_lock();  	list_for_each_entry_rcu(laddr, &bp->address_list, list) { -		if (!laddr->valid && laddr->state != SCTP_ADDR_SRC) +		if (!laddr->valid)  			continue; -		if ((laddr->a.sa.sa_family == AF_INET6) && +		if ((laddr->state == SCTP_ADDR_SRC) && +		    (laddr->a.sa.sa_family == AF_INET6) &&  		    (scope <= sctp_scope(&laddr->a))) {  			bmatchlen = sctp_v6_addr_match_len(daddr, &laddr->a);  			if (!baddr || (matchlen < bmatchlen)) {  |