Files
packages/net/openvswitch/patches/0002-compat-Fix-ipv6_dst_lookup-build-error.patch
Josef Schlehofer 8e1b62d4bb openvswitch: update to version 2.11.6 (security fix)
Fixes CVEs:
- CVE-2020-35498
- In DPDK: CVE-2015-8011 and CVE-2020-27827
- In LLDP: CVE-2019-14818, CVE-2020-10722, CVE-2020-10723 and CVE-2020-10724

Removed patches:
- 0001-compat-Include-confirm_neigh-parameter-if-needed.patch because they
are included in this release as it was backported
- 0010-acinclude-Fix-build-with-kernels-with-prandom-moved-.patch
included in this release as it was backported

Other patches were refreshed.

Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
2021-02-23 17:14:37 +08:00

97 lines
3.5 KiB
Diff

From fd3ba6d1ca4b716630b9bc015698f35773a6dd02 Mon Sep 17 00:00:00 2001
From: Yi-Hung Wei <yihung.wei@gmail.com>
Date: Wed, 29 Apr 2020 14:25:50 -0700
Subject: [PATCH] compat: Fix ipv6_dst_lookup build error
The geneve/vxlan compat code base invokes ipv6_dst_lookup() which is
recently replaced by ipv6_dst_lookup_flow() in the stable kernel tree.
This causes travis build failure:
* https://travis-ci.org/github/openvswitch/ovs/builds/681084038
This patch updates the backport logic to invoke the right function.
Related patch in
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
b9f3e457098e ("net: ipv6_stub: use ip6_dst_lookup_flow instead of
ip6_dst_lookup")
Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
Signed-off-by: William Tu <u9012063@gmail.com>
(cherry picked from commit 5519e384f6a17f564fef4c5eb39e471e16c77235)
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
---
acinclude.m4 | 3 +++
datapath/linux/compat/geneve.c | 11 +++++++----
datapath/linux/compat/vxlan.c | 14 ++++++++------
3 files changed, 18 insertions(+), 10 deletions(-)
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -510,7 +510,10 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
OVS_GREP_IFELSE([$KSRC/include/net/addrconf.h], [ipv6_dst_lookup.*net],
[OVS_DEFINE([HAVE_IPV6_DST_LOOKUP_NET])])
+ OVS_GREP_IFELSE([$KSRC/include/net/addrconf.h], [ipv6_dst_lookup_flow.*net],
+ [OVS_DEFINE([HAVE_IPV6_DST_LOOKUP_FLOW_NET])])
OVS_GREP_IFELSE([$KSRC/include/net/addrconf.h], [ipv6_stub])
+ OVS_GREP_IFELSE([$KSRC/include/net/addrconf.h], [ipv6_dst_lookup_flow])
OVS_GREP_IFELSE([$KSRC/include/linux/err.h], [ERR_CAST])
OVS_GREP_IFELSE([$KSRC/include/linux/err.h], [IS_ERR_OR_NULL])
--- a/datapath/linux/compat/geneve.c
+++ b/datapath/linux/compat/geneve.c
@@ -962,15 +962,18 @@ static struct dst_entry *geneve_get_v6_d
return dst;
}
-#ifdef HAVE_IPV6_DST_LOOKUP_NET
+#if defined(HAVE_IPV6_DST_LOOKUP_FLOW_NET)
+ if (ipv6_stub->ipv6_dst_lookup_flow(geneve->net, gs6->sock->sk, &dst,
+ fl6)) {
+#elif defined(HAVE_IPV6_DST_LOOKUP_FLOW)
+ if (ipv6_stub->ipv6_dst_lookup_flow(gs6->sock->sk, &dst, fl6)) {
+#elif defined(HAVE_IPV6_DST_LOOKUP_NET)
if (ipv6_stub->ipv6_dst_lookup(geneve->net, gs6->sock->sk, &dst, fl6)) {
-#else
-#ifdef HAVE_IPV6_STUB
+#elif defined(HAVE_IPV6_STUB)
if (ipv6_stub->ipv6_dst_lookup(gs6->sock->sk, &dst, fl6)) {
#else
if (ip6_dst_lookup(gs6->sock->sk, &dst, fl6)) {
#endif
-#endif
netdev_dbg(dev, "no route to %pI6\n", &fl6->daddr);
return ERR_PTR(-ENETUNREACH);
}
--- a/datapath/linux/compat/vxlan.c
+++ b/datapath/linux/compat/vxlan.c
@@ -990,18 +990,20 @@ static struct dst_entry *vxlan6_get_rout
fl6.fl6_dport = dport;
fl6.fl6_sport = sport;
-#ifdef HAVE_IPV6_DST_LOOKUP_NET
- err = ipv6_stub->ipv6_dst_lookup(vxlan->net,
- sock6->sock->sk,
+#if defined(HAVE_IPV6_DST_LOOKUP_FLOW_NET)
+ err = ipv6_stub->ipv6_dst_lookup_flow(vxlan->net, sock6->sock->sk,
+ &ndst, &fl6);
+#elif defined(HAVE_IPV6_DST_LOOKUP_FLOW)
+ err = ipv6_stub->ipv6_dst_lookup_flow(sock6->sock->sk, &ndst, &fl6);
+#elif defined(HAVE_IPV6_DST_LOOKUP_NET)
+ err = ipv6_stub->ipv6_dst_lookup(vxlan->net, sock6->sock->sk,
&ndst, &fl6);
-#else
-#ifdef HAVE_IPV6_STUB
+#elif defined(HAVE_IPV6_STUB)
err = ipv6_stub->ipv6_dst_lookup(vxlan->vn6_sock->sock->sk,
&ndst, &fl6);
#else
err = ip6_dst_lookup(vxlan->vn6_sock->sock->sk, &ndst, &fl6);
#endif
-#endif
if (err < 0)
return ERR_PTR(err);