X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=net%2Fsctp%2Fipv6.c;h=96a55910262c4e958bef93d203ce802dede835df;hb=fecda03493646b53f53892fa3c38c75ba9310374;hp=e7b2d4fe2b6a120c66b3e869d796eb6dba69c2d2;hpb=afb14c7cb66c0401237b181131fd3d6bd4810909;p=deliverable%2Flinux.git 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 */