Home Home > GIT Browse > stable
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiri Slaby <jslaby@suse.cz>2019-02-15 10:23:48 +0100
committerJiri Slaby <jslaby@suse.cz>2019-02-15 10:24:14 +0100
commitb2481606b2e0f63152d436451d8f4067ce34d2e8 (patch)
treef6680382d46324c56b292aeec7741dc5d8074bc5
parentcc2c46acdc4b0b72f992a57c616fc705a19d4ab7 (diff)
xfrm: Make set-mark default behavior backward compatible
-rw-r--r--patches.kernel.org/4.20.9-044-xfrm-Make-set-mark-default-behavior-backward-c.patch53
-rw-r--r--series.conf1
2 files changed, 54 insertions, 0 deletions
diff --git a/patches.kernel.org/4.20.9-044-xfrm-Make-set-mark-default-behavior-backward-c.patch b/patches.kernel.org/4.20.9-044-xfrm-Make-set-mark-default-behavior-backward-c.patch
new file mode 100644
index 0000000000..e574b3ac48
--- /dev/null
+++ b/patches.kernel.org/4.20.9-044-xfrm-Make-set-mark-default-behavior-backward-c.patch
@@ -0,0 +1,53 @@
+From: Benedict Wong <benedictwong@google.com>
+Date: Mon, 14 Jan 2019 11:24:38 -0800
+Subject: [PATCH] xfrm: Make set-mark default behavior backward compatible
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+References: bnc#1012628
+Patch-mainline: 4.20.9
+Git-commit: e2612cd496e7b465711d219ea6118893d7253f52
+
+commit e2612cd496e7b465711d219ea6118893d7253f52 upstream.
+
+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>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ net/xfrm/xfrm_policy.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
+index 119a427d9b2b..6ea8036fcdbe 100644
+--- a/net/xfrm/xfrm_policy.c
++++ b/net/xfrm/xfrm_policy.c
+@@ -1628,7 +1628,10 @@ static struct dst_entry *xfrm_bundle_create(struct xfrm_policy *policy,
+ dst_copy_metrics(dst1, dst);
+
+ if (xfrm[i]->props.mode != XFRM_MODE_TRANSPORT) {
+- __u32 mark = xfrm_smark_get(fl->flowi_mark, xfrm[i]);
++ __u32 mark = 0;
++
++ if (xfrm[i]->props.smark.v || xfrm[i]->props.smark.m)
++ mark = xfrm_smark_get(fl->flowi_mark, xfrm[i]);
+
+ family = xfrm[i]->props.family;
+ dst = xfrm_dst_lookup(xfrm[i], tos, fl->flowi_oif,
+--
+2.20.1
+
diff --git a/series.conf b/series.conf
index 0535972a82..85a5083e3d 100644
--- a/series.conf
+++ b/series.conf
@@ -1126,6 +1126,7 @@
patches.kernel.org/4.20.9-041-drm-vmwgfx-Fix-setting-of-dma-masks.patch
patches.kernel.org/4.20.9-042-drm-vmwgfx-Fix-an-uninitialized-fence-handle-v.patch
patches.kernel.org/4.20.9-043-drm-vmwgfx-Return-error-code-from-vmw_execbuf_.patch
+ patches.kernel.org/4.20.9-044-xfrm-Make-set-mark-default-behavior-backward-c.patch
########################################################
# Build fixes that apply to the vanilla kernel too.