UPSTREAM: xfrm: Make set-mark default behavior backward compatible
authorBenedict Wong <benedictwong@google.com>
Mon, 14 Jan 2019 19:24:38 +0000 (11:24 -0800)
committerMaciej Żenczykowski <maze@google.com>
Tue, 5 Feb 2019 02:47:11 +0000 (02:47 +0000)
commit71c835d2a50c28f29ec219ae4a5cc1c39a902c36
tree57accb5c87ae95abfee4e0483b7c5920d8ada739
parentdcc2cc75ff5c2bf6ee33f349d6d28b2ef89a57f1
UPSTREAM: xfrm: Make set-mark default behavior backward compatible

Fixes 9b42c1f, which changed the default route lookup behavior for
tunnel mode SAs in the outbound direction to use the skb mark, whereas
previously mark=0 was used if the output mark was unspecified. In
mark-based routing schemes such as Android’s, this change in default
behavior causes routing loops or lookup failures.

This patch restores the default behavior of using a 0 mark while still
incorporating the skb mark if the SET_MARK (and SET_MARK_MASK) is
specified.

Tested with additions to Android's kernel unit test suite:
https://android-review.googlesource.com/c/kernel/tests/+/860150

Fixes: 9b42c1f ("xfrm: Extend the output_mark to support input direction and masking")
Signed-off-by: Benedict Wong <benedictwong@google.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
(cherry picked from commit e2612cd496e7b465711d219ea6118893d7253f52)
Bug: 122236988
Test: Passes kernel tests
Change-Id: I1289b5b7b1eb93c6d99a0ba7d28e24c3eb25883d
Signed-off-by: Benedict Wong <benedictwong@google.com>
net/xfrm/xfrm_policy.c