diff options
Diffstat (limited to 'net/sctp/ipv6.c')
| -rw-r--r-- | net/sctp/ipv6.c | 4 | 
1 files changed, 3 insertions, 1 deletions
diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c index e7b2d4fe2b6a..96a55910262c 100644 --- a/net/sctp/ipv6.c +++ b/net/sctp/ipv6.c @@ -279,7 +279,9 @@ static void sctp_v6_get_dst(struct sctp_transport *t, union sctp_addr *saddr,  		sctp_v6_to_addr(&dst_saddr, &fl6->saddr, htons(bp->port));  		rcu_read_lock();  		list_for_each_entry_rcu(laddr, &bp->address_list, list) { -			if (!laddr->valid || (laddr->state != SCTP_ADDR_SRC)) +			if (!laddr->valid || laddr->state == SCTP_ADDR_DEL || +			    (laddr->state != SCTP_ADDR_SRC && +			     !asoc->src_out_of_asoc_ok))  				continue;  			/* Do not compare against v4 addrs */  | 
