xfrm: Make set-mark default behavior backward compatible
authorBenedict Wong <benedictwong@google.com>
Mon, 14 Jan 2019 19:24:38 +0000 (11:24 -0800)
committerSteffen Klassert <steffen.klassert@secunet.com>
Wed, 16 Jan 2019 12:10:55 +0000 (13:10 +0100)
commite2612cd496e7b465711d219ea6118893d7253f52
tree24d472c27fda2886de4cb24fdc66ef4322aca808
parent35e6103861a3a970de6c84688c6e7a1f65b164ca
xfrm: Make set-mark default behavior backward compatible

Fixes 9b42c1f179a6, 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: 9b42c1f179a6 ("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>
net/xfrm/xfrm_policy.c