summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2022-10-18 01:48:28 +0900
committerKazuki Yamaguchi <k@rhe.jp>2022-11-13 21:12:15 +0900
commit70d9d69ab99b4a64175c883d010005b1adc4b9d2 (patch)
tree8632e38c024744e8b97a5b8d7984fc4cd61d48cb
parent7964afa171fffe525ace97f9812c2308a9113cf1 (diff)
downloadlinux-debian-70d9d69ab99b4a64175c883d010005b1adc4b9d2.tar.gz
restarting on master=6.0 with rhe patches v7
-rw-r--r--debian/changelog9
-rw-r--r--debian/config/defines2
-rw-r--r--debian/patches/rhe/0001-net-flow_dissector-dissect-into-ip-ipv6-header-insid.patch79
-rw-r--r--debian/patches/series3
4 files changed, 92 insertions, 1 deletions
diff --git a/debian/changelog b/debian/changelog
index 41c9fc5a7..a7c6fb94d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+linux (6.0.8-1~rhe0+7) UNRELEASED; urgency=medium
+
+ * Based on 7964afa171ff ("Prepare to release linux (6.0.8-1).", 2022-11-11,
+ sid)
+ * Adjusted configs: debian/changelog and debian/config/defines
+ * Added RHE patches (v7 - no changes from 5.16.0-rhe0)
+
+ -- Kazuki Yamaguchi <k@rhe.jp> Sun, 13 Nov 2022 21:10:56 +0900
+
linux (6.0.8-1) unstable; urgency=medium
* New upstream stable update:
diff --git a/debian/config/defines b/debian/config/defines
index e7c6ce18e..6b676bfda 100644
--- a/debian/config/defines
+++ b/debian/config/defines
@@ -1,5 +1,5 @@
[abi]
-abiname: 4
+abiname: rhe0
ignore-changes:
__cpuhp_*
__udp_gso_segment
diff --git a/debian/patches/rhe/0001-net-flow_dissector-dissect-into-ip-ipv6-header-insid.patch b/debian/patches/rhe/0001-net-flow_dissector-dissect-into-ip-ipv6-header-insid.patch
new file mode 100644
index 000000000..4438c1430
--- /dev/null
+++ b/debian/patches/rhe/0001-net-flow_dissector-dissect-into-ip-ipv6-header-insid.patch
@@ -0,0 +1,79 @@
+From 9903b7d309f4587540f47e0ab6e5b04b65aab22c Mon Sep 17 00:00:00 2001
+From: Kazuki Yamaguchi <k@rhe.jp>
+Date: Sun, 6 Sep 2020 04:46:10 +0900
+Subject: [PATCH] net/flow_dissector: dissect into ip/ipv6 header inside MPLS
+
+---
+ net/core/flow_dissector.c | 27 ++++++++++++++++++++++-----
+ 1 file changed, 22 insertions(+), 5 deletions(-)
+
+diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c
+index 5dc3860e9fc7..0fcfd8a78cf1 100644
+--- a/net/core/flow_dissector.c
++++ b/net/core/flow_dissector.c
+@@ -413,9 +413,9 @@ static enum flow_dissect_ret
+ __skb_flow_dissect_mpls(const struct sk_buff *skb,
+ struct flow_dissector *flow_dissector,
+ void *target_container, const void *data, int nhoff,
+- int hlen, int lse_index, bool *entropy_label)
++ int hlen, int lse_index, bool *entropy_label, __be16 *proto)
+ {
+- struct mpls_label *hdr, _hdr;
++ struct mpls_label *hdr, _hdr[2];
+ u32 entry, label, bos;
+
+ if (!dissector_uses_key(flow_dissector,
+@@ -431,7 +431,7 @@ __skb_flow_dissect_mpls(const struct sk_buff *skb,
+ if (!hdr)
+ return FLOW_DISSECT_RET_OUT_BAD;
+
+- entry = ntohl(hdr->entry);
++ entry = ntohl(hdr[0].entry);
+ label = (entry & MPLS_LS_LABEL_MASK) >> MPLS_LS_LABEL_SHIFT;
+ bos = (entry & MPLS_LS_S_MASK) >> MPLS_LS_S_SHIFT;
+
+@@ -464,7 +464,19 @@ __skb_flow_dissect_mpls(const struct sk_buff *skb,
+
+ *entropy_label = label == MPLS_LABEL_ENTROPY;
+
+- return bos ? FLOW_DISSECT_RET_OUT_GOOD : FLOW_DISSECT_RET_PROTO_AGAIN;
++ if (bos) {
++ /* A wild assumption. I use IPv4 and IPv6 only */
++ u8 firstbyte = ntohl(hdr[1].entry) >> 24;
++ if (0x45 <= firstbyte && firstbyte <= 0x4f) {
++ *proto = htons(ETH_P_IP);
++ return FLOW_DISSECT_RET_PROTO_AGAIN;
++ } else if (0x60 <= firstbyte && firstbyte <= 0x6f) {
++ *proto = htons(ETH_P_IPV6);
++ return FLOW_DISSECT_RET_PROTO_AGAIN;
++ }
++ return FLOW_DISSECT_RET_OUT_GOOD;
++ }
++ return FLOW_DISSECT_RET_PROTO_AGAIN;
+ }
+
+ static enum flow_dissect_ret
+@@ -1302,7 +1314,7 @@ bool __skb_flow_dissect(const struct net *net,
+ fdret = __skb_flow_dissect_mpls(skb, flow_dissector,
+ target_container, data,
+ nhoff, hlen, mpls_lse,
+- &mpls_el);
++ &mpls_el, &proto);
+ nhoff += sizeof(struct mpls_label);
+ mpls_lse++;
+ break;
+@@ -1871,6 +1883,11 @@ static const struct flow_dissector_key flow_keys_dissector_keys[] = {
+ .key_id = FLOW_DISSECTOR_KEY_GRE_KEYID,
+ .offset = offsetof(struct flow_keys, keyid),
+ },
++ {
++ .key_id = FLOW_DISSECTOR_KEY_MPLS,
++ /* XXX: Reusing keyid */
++ .offset = offsetof(struct flow_keys, keyid),
++ },
+ };
+
+ static const struct flow_dissector_key flow_keys_dissector_symmetric_keys[] = {
+--
+2.38.0
+
diff --git a/debian/patches/series b/debian/patches/series
index d3ca53839..e1c1f9bbf 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -118,3 +118,6 @@ bugfix/all/libapi-define-_fortify_source-as-2-not-empty.patch
bugfix/all/tools-perf-fix-missing-ldflags-for-some-programs.patch
# ABI maintenance
+
+# RHE
+rhe/0001-net-flow_dissector-dissect-into-ip-ipv6-header-insid.patch