From: Marcelo Ricardo Leitner <marcelo.leitner@xxxxxxxxx> Date: Thu, 26 Mar 2020 20:47:46 -0300 > 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 > 410f03831c07), 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: 410f03831c07 ("sctp: add routing output fallback") > Reported-by: Jin Meng <meng.a.jin@xxxxxxxxxxxxxxx> > Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@xxxxxxxxx> Applied and queued up for -stable.