patch 'ipsec: fix build with GCC 12' has been queued to stable release 20.11.7

luca.boccassi at gmail.com luca.boccassi at gmail.com
Thu Nov 3 10:26:44 CET 2022


Hi,

FYI, your patch has been queued to stable release 20.11.7

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/22. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable

This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/eb01aeac7081ff4b6af0c5b397d11803fa0ffa78

Thanks.

Luca Boccassi

---
>From eb01aeac7081ff4b6af0c5b397d11803fa0ffa78 Mon Sep 17 00:00:00 2001
From: Amit Prakash Shukla <amitprakashs at marvell.com>
Date: Thu, 4 Aug 2022 19:10:54 +0530
Subject: [PATCH] ipsec: fix build with GCC 12

[ upstream commit 2be383423e433b5d42324cb450589b46d057c2ed ]

GCC 12 raises the following warning:

In function '_mm_loadu_si128',
    inlined from 'rte_mov16' at
	../lib/eal/x86/include/rte_memcpy.h:507:9,
    inlined from 'rte_mov128' at
	../lib/eal/x86/include/rte_memcpy.h:549:2,
    inlined from 'rte_memcpy_generic' at
	../lib/eal/x86/include/rte_memcpy.h:732:4,
    inlined from 'rte_memcpy' at
	../lib/eal/x86/include/rte_memcpy.h:882:10,
    inlined from 'outb_tun_pkt_prepare' at
	../lib/ipsec/esp_outb.c:224:2:
/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/include/emmintrin.h:703:10: error:
	array subscript '__m128i_u[15]' is partly outside array bounds of
	'const uint8_t[255]' {aka 'const unsigned char[255]'}
	[-Werror=array-bounds]
  703 |   return *__P;
      |          ^~~~
In file included from ../lib/ipsec/esp_outb.c:17:
../lib/ipsec/pad.h: In function 'outb_tun_pkt_prepare':
../lib/ipsec/pad.h:10:22: note: at offset 240 into object 'esp_pad_bytes'
	of size 255
   10 | static const uint8_t esp_pad_bytes[IPSEC_MAX_PAD_SIZE] = {
      |                      ^~~~~~~~~~~~~

This patch restrict copy to minimum size.

Bugzilla ID: 1060
Fixes: 6015e6a13398 ("ipsec: move inbound and outbound code")

Signed-off-by: Amit Prakash Shukla <amitprakashs at marvell.com>
Acked-by: Konstantin Ananyev <konstantin.v.ananyev at yandex.ru>
---
 lib/librte_ipsec/esp_outb.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/lib/librte_ipsec/esp_outb.c b/lib/librte_ipsec/esp_outb.c
index 0bf3cd6bd4..d2c15aeb43 100644
--- a/lib/librte_ipsec/esp_outb.c
+++ b/lib/librte_ipsec/esp_outb.c
@@ -172,8 +172,10 @@ outb_tun_pkt_prepare(struct rte_ipsec_sa *sa, rte_be64_t sqc,
 	/* pad length */
 	pdlen -= sizeof(*espt);
 
+	RTE_ASSERT(pdlen <= sizeof(esp_pad_bytes));
+
 	/* copy padding data */
-	rte_memcpy(pt, esp_pad_bytes, pdlen);
+	rte_memcpy(pt, esp_pad_bytes, RTE_MIN(pdlen, sizeof(esp_pad_bytes)));
 
 	/* update esp trailer */
 	espt = (struct rte_esp_tail *)(pt + pdlen);
@@ -339,8 +341,10 @@ outb_trs_pkt_prepare(struct rte_ipsec_sa *sa, rte_be64_t sqc,
 	/* pad length */
 	pdlen -= sizeof(*espt);
 
+	RTE_ASSERT(pdlen <= sizeof(esp_pad_bytes));
+
 	/* copy padding data */
-	rte_memcpy(pt, esp_pad_bytes, pdlen);
+	rte_memcpy(pt, esp_pad_bytes, RTE_MIN(pdlen, sizeof(esp_pad_bytes)));
 
 	/* update esp trailer */
 	espt = (struct rte_esp_tail *)(pt + pdlen);
-- 
2.34.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2022-11-03 09:27:27.017183991 +0000
+++ 0026-ipsec-fix-build-with-GCC-12.patch	2022-11-03 09:27:25.361422208 +0000
@@ -1 +1 @@
-From 2be383423e433b5d42324cb450589b46d057c2ed Mon Sep 17 00:00:00 2001
+From eb01aeac7081ff4b6af0c5b397d11803fa0ffa78 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 2be383423e433b5d42324cb450589b46d057c2ed ]
+
@@ -36 +37,0 @@
-Cc: stable at dpdk.org
@@ -41 +42 @@
- lib/ipsec/esp_outb.c | 8 ++++++--
+ lib/librte_ipsec/esp_outb.c | 8 ++++++--
@@ -44,5 +45,5 @@
-diff --git a/lib/ipsec/esp_outb.c b/lib/ipsec/esp_outb.c
-index 5a5429a12b..9cbd9202f6 100644
---- a/lib/ipsec/esp_outb.c
-+++ b/lib/ipsec/esp_outb.c
-@@ -219,8 +219,10 @@ outb_tun_pkt_prepare(struct rte_ipsec_sa *sa, rte_be64_t sqc,
+diff --git a/lib/librte_ipsec/esp_outb.c b/lib/librte_ipsec/esp_outb.c
+index 0bf3cd6bd4..d2c15aeb43 100644
+--- a/lib/librte_ipsec/esp_outb.c
++++ b/lib/librte_ipsec/esp_outb.c
+@@ -172,8 +172,10 @@ outb_tun_pkt_prepare(struct rte_ipsec_sa *sa, rte_be64_t sqc,
@@ -60 +61 @@
-@@ -416,8 +418,10 @@ outb_trs_pkt_prepare(struct rte_ipsec_sa *sa, rte_be64_t sqc,
+@@ -339,8 +341,10 @@ outb_trs_pkt_prepare(struct rte_ipsec_sa *sa, rte_be64_t sqc,


More information about the stable mailing list