]> git.baikalelectronics.ru Git - kernel.git/commit
sctp: check src addr when processing SACK to update transport state
authorNicolas Dichtel <nicolas.dichtel@6wind.com>
Wed, 3 Oct 2012 05:43:22 +0000 (05:43 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 4 Oct 2012 19:53:48 +0000 (15:53 -0400)
commit3a8bf40c7e2c0804d2220a1b2ace63b87887a0f2
treeec4c3953956d2de79ee326d08e46c6d9736a1068
parentb911f5ade090a44829e6f154f0f949e4d38e974c
sctp: check src addr when processing SACK to update transport state

Suppose we have an SCTP connection with two paths. After connection is
established, path1 is not available, thus this path is marked as inactive. Then
traffic goes through path2, but for some reasons packets are delayed (after
rto.max). Because packets are delayed, the retransmit mechanism will switch
again to path1. At this time, we receive a delayed SACK from path2. When we
update the state of the path in sctp_check_transmitted(), we do not take into
account the source address of the SACK, hence we update the wrong path.

Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Acked-by: Vlad Yasevich <vyasevich@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/sctp/structs.h
net/sctp/outqueue.c
net/sctp/sm_sideeffect.c
net/sctp/sm_statefuns.c