[dpdk-stable] patch 'test/ipsec: fix crash in session destroy' has been queued to stable release 19.11.3

luca.boccassi at gmail.com luca.boccassi at gmail.com
Tue May 19 14:54:12 CEST 2020


Hi,

FYI, your patch has been queued to stable release 19.11.3

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 05/21/20. 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.

Thanks.

Luca Boccassi

---
>From 2193048d873333899100af6436725928ea9db909 Mon Sep 17 00:00:00 2001
From: Ruifeng Wang <ruifeng.wang at arm.com>
Date: Fri, 20 Mar 2020 16:05:20 +0800
Subject: [PATCH] test/ipsec: fix crash in session destroy

[ upstream commit 40a49a89d7dc7c64e58260e0097dd0ae5f98e9c4 ]

Segfault was observed when running ipsec unit test:

 + TestCase [10] : test_ipsec_replay_inb_repeat_null_null_wrapper
                   succeeded
 + TestCase [11] : test_ipsec_replay_inb_inside_burst_null_null_wrapper
                   succeeded
 + TestCase [12] : test_ipsec_crypto_inb_burst_2sa_null_null_wrapper
                   succeeded
 + TestCase [13] : test_ipsec_crypto_inb_burst_2sa_4grp_null_null_wrapper
                   succeeded
Segmentation fault

Data corruption happens due to incorrect destroy of session. Security
session needs process different from crypto session.

Destroy corresponding sessions according to different security actions.

Fixes: 05fe65eb66b2 ("test/ipsec: introduce functional test")

Signed-off-by: Ruifeng Wang <ruifeng.wang at arm.com>
Reviewed-by: Phil Yang <phil.yang at arm.com>
Reviewed-by: Gavin Hu <gavin.hu at arm.com>
Tested-by: Konstantin Ananyev <konstantin.ananyev at intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev at intel.com>
---
 app/test/test_ipsec.c | 33 ++++++++++++++++++++++++++++++---
 1 file changed, 30 insertions(+), 3 deletions(-)

diff --git a/app/test/test_ipsec.c b/app/test/test_ipsec.c
index 9e14472938..79d00d7e02 100644
--- a/app/test/test_ipsec.c
+++ b/app/test/test_ipsec.c
@@ -1167,6 +1167,34 @@ test_ipsec_dump_buffers(struct ipsec_unitest_params *ut_params, int i)
 	}
 }
 
+static void
+destroy_dummy_sec_session(struct ipsec_unitest_params *ut,
+	uint32_t j)
+{
+	rte_security_session_destroy(&dummy_sec_ctx,
+					ut->ss[j].security.ses);
+	ut->ss[j].security.ctx = NULL;
+}
+
+static void
+destroy_crypto_session(struct ipsec_unitest_params *ut,
+	uint8_t crypto_dev, uint32_t j)
+{
+	rte_cryptodev_sym_session_clear(crypto_dev, ut->ss[j].crypto.ses);
+	rte_cryptodev_sym_session_free(ut->ss[j].crypto.ses);
+	memset(&ut->ss[j], 0, sizeof(ut->ss[j]));
+}
+
+static void
+destroy_session(struct ipsec_unitest_params *ut,
+	uint8_t crypto_dev, uint32_t j)
+{
+	if (ut->ss[j].type == RTE_SECURITY_ACTION_TYPE_NONE)
+		return destroy_crypto_session(ut, crypto_dev, j);
+	else
+		return destroy_dummy_sec_session(ut, j);
+}
+
 static void
 destroy_sa(uint32_t j)
 {
@@ -1175,9 +1203,8 @@ destroy_sa(uint32_t j)
 
 	rte_ipsec_sa_fini(ut->ss[j].sa);
 	rte_free(ut->ss[j].sa);
-	rte_cryptodev_sym_session_clear(ts->valid_dev, ut->ss[j].crypto.ses);
-	rte_cryptodev_sym_session_free(ut->ss[j].crypto.ses);
-	memset(&ut->ss[j], 0, sizeof(ut->ss[j]));
+
+	destroy_session(ut, ts->valid_dev, j);
 }
 
 static int
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2020-05-19 13:56:21.356042820 +0100
+++ 0062-test-ipsec-fix-crash-in-session-destroy.patch	2020-05-19 13:56:18.291503115 +0100
@@ -1,8 +1,10 @@
-From 40a49a89d7dc7c64e58260e0097dd0ae5f98e9c4 Mon Sep 17 00:00:00 2001
+From 2193048d873333899100af6436725928ea9db909 Mon Sep 17 00:00:00 2001
 From: Ruifeng Wang <ruifeng.wang at arm.com>
 Date: Fri, 20 Mar 2020 16:05:20 +0800
 Subject: [PATCH] test/ipsec: fix crash in session destroy
 
+[ upstream commit 40a49a89d7dc7c64e58260e0097dd0ae5f98e9c4 ]
+
 Segfault was observed when running ipsec unit test:
 
  + TestCase [10] : test_ipsec_replay_inb_repeat_null_null_wrapper
@@ -21,7 +23,6 @@
 Destroy corresponding sessions according to different security actions.
 
 Fixes: 05fe65eb66b2 ("test/ipsec: introduce functional test")
-Cc: stable at dpdk.org
 
 Signed-off-by: Ruifeng Wang <ruifeng.wang at arm.com>
 Reviewed-by: Phil Yang <phil.yang at arm.com>


More information about the stable mailing list