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

christian.ehrhardt at canonical.com christian.ehrhardt at canonical.com
Fri Nov 11 12:38:32 CET 2022


Hi,

FYI, your patch has been queued to stable release 19.11.14

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/18/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/cpaelzer/dpdk-stable-queue

This queued commit can be viewed at:
https://github.com/cpaelzer/dpdk-stable-queue/commit/3b5df1527709de10d048ae48f0551c9f089cebf6

Thanks.

Christian Ehrhardt <christian.ehrhardt at canonical.com>

---
>From 3b5df1527709de10d048ae48f0551c9f089cebf6 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 31b920f651..7e7340871a 100644
--- a/lib/librte_ipsec/esp_outb.c
+++ b/lib/librte_ipsec/esp_outb.c
@@ -169,8 +169,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);
@@ -332,8 +334,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.38.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2022-11-11 12:35:05.323732256 +0100
+++ 0015-ipsec-fix-build-with-GCC-12.patch	2022-11-11 12:35:04.741191886 +0100
@@ -1 +1 @@
-From 2be383423e433b5d42324cb450589b46d057c2ed Mon Sep 17 00:00:00 2001
+From 3b5df1527709de10d048ae48f0551c9f089cebf6 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 31b920f651..7e7340871a 100644
+--- a/lib/librte_ipsec/esp_outb.c
++++ b/lib/librte_ipsec/esp_outb.c
+@@ -169,8 +169,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,
+@@ -332,8 +334,10 @@ outb_trs_pkt_prepare(struct rte_ipsec_sa *sa, rte_be64_t sqc,


More information about the stable mailing list