linux-yocto/net/sctp
Marcelo Ricardo Leitner 582eea2305 sctp: fix possibly using a bad saddr with a given dst
Under certain circumstances, depending on the order of addresses on the
interfaces, it could be that sctp_v[46]_get_dst() would return a dst
with a mismatched struct flowi.

For example, if when walking through the bind addresses and the first
one is not a match, it saves the dst as a fallback (added in
410f03831c), but not the flowi. Then if the next one is also not a
match, the previous dst will be returned but with the flowi information
for the 2nd address, which is wrong.

The fix is to use a locally stored flowi that can be used for such
attempts, and copy it to the parameter only in case it is a possible
match, together with the corresponding dst entry.

The patch updates IPv6 code mostly just to be in sync. Even though the issue
is also present there, it fallback is not expected to work with IPv6.

Fixes: 410f03831c ("sctp: add routing output fallback")
Reported-by: Jin Meng <meng.a.jin@nokia-sbell.com>
Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Tested-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-03-29 22:01:43 -07:00
..
associola.c sctp: get netns from asoc and ep base 2019-12-09 20:14:01 -08:00
auth.c
bind_addr.c
chunk.c sctp: get netns from asoc and ep base 2019-12-09 20:14:01 -08:00
debug.c
diag.c inet_diag: return classid for all socket types 2020-03-08 21:57:48 -07:00
endpointola.c sctp: get netns from asoc and ep base 2019-12-09 20:14:01 -08:00
input.c sctp: get netns from asoc and ep base 2019-12-09 20:14:01 -08:00
inqueue.c
ipv6.c sctp: fix possibly using a bad saddr with a given dst 2020-03-29 22:01:43 -07:00
Kconfig
Makefile
objcnt.c
offload.c
output.c sctp: get netns from asoc and ep base 2019-12-09 20:14:01 -08:00
outqueue.c sctp: add enabled check for path tracepoint loop. 2019-12-30 20:33:05 -08:00
primitive.c
proc.c
protocol.c sctp: fix possibly using a bad saddr with a given dst 2020-03-29 22:01:43 -07:00
sm_make_chunk.c sctp: get netns from asoc and ep base 2019-12-09 20:14:01 -08:00
sm_sideeffect.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-01-09 12:13:43 -08:00
sm_statefuns.c sctp: move the format error check out of __sctp_sf_do_9_1_abort 2020-02-17 21:56:03 -08:00
sm_statetable.c
socket.c sctp: fix refcount bug in sctp_wfree 2020-03-29 21:57:30 -07:00
stream_interleave.c sctp: get netns from asoc and ep base 2019-12-09 20:14:01 -08:00
stream_sched_prio.c
stream_sched_rr.c
stream_sched.c
stream.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-12-31 13:37:13 -08:00
sysctl.c sctp: add support for Primary Path Switchover 2019-11-08 14:18:32 -08:00
transport.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-12-31 13:37:13 -08:00
tsnmap.c
ulpevent.c
ulpqueue.c sctp: get netns from asoc and ep base 2019-12-09 20:14:01 -08:00