patch 'test/crypto: fix mbuf handling' has been queued to stable release 22.11.11

luca.boccassi at gmail.com luca.boccassi at gmail.com
Mon Oct 27 17:19:53 CET 2025


Hi,

FYI, your patch has been queued to stable release 22.11.11

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

This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/6a8fd6242932862c080c41232f5b296dc05a59f7

Thanks.

Luca Boccassi

---
>From 6a8fd6242932862c080c41232f5b296dc05a59f7 Mon Sep 17 00:00:00 2001
From: Nithinsen Kaithakadan <nkaithakadan at marvell.com>
Date: Tue, 23 Sep 2025 14:22:54 +0000
Subject: [PATCH] test/crypto: fix mbuf handling

[ upstream commit 1ff54c055d95736aae05a40b361427215c318cc1 ]

This patch resolves the following mbuf sanity check errors.
  - updating nb_segs and pkt_len in the head mbuf after
    freeing intermediate nodes in the chain.
  - fix incorrect usage of rte_pktmbuf_append by ensuring
    the head mbuf is passed instead of an intermediate
    node, allowing proper tail detection and metadata
    update.

Fixes: dc3f6c5347b2 ("test/crypto: fix wireless auth digest segment")
Fixes: 43220096d66a ("test/crypto: add PDCP cases for scatter gather")
Fixes: dcdd01691f39 ("test/crypto: add GMAC SGL")
Fixes: f3dbf94be60c ("app/test: check SGL on QAT")

Signed-off-by: Nithinsen Kaithakadan <nkaithakadan at marvell.com>
Acked-by: Akhil Goyal <gakhil at marvell.com>
---
 app/test/test_cryptodev.c | 59 ++++++++++++++++++++++++++-------------
 1 file changed, 40 insertions(+), 19 deletions(-)

diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
index 8d58510e2d..6dc6dfb9c5 100644
--- a/app/test/test_cryptodev.c
+++ b/app/test/test_cryptodev.c
@@ -3000,6 +3000,8 @@ create_wireless_algo_auth_cipher_operation(
 		uint16_t remaining_off = (auth_offset >> 3) + (auth_len >> 3);
 		struct rte_mbuf *sgl_buf = (op_mode == IN_PLACE ?
 				sym_op->m_src : sym_op->m_dst);
+		struct rte_mbuf *sgl_buf_head = sgl_buf;
+
 		while (remaining_off >= rte_pktmbuf_data_len(sgl_buf)) {
 			remaining_off -= rte_pktmbuf_data_len(sgl_buf);
 			sgl_buf = sgl_buf->next;
@@ -3007,11 +3009,18 @@ create_wireless_algo_auth_cipher_operation(
 
 		/* The last segment should be large enough to hold full digest */
 		if (sgl_buf->data_len < auth_tag_len) {
-			rte_pktmbuf_free(sgl_buf->next);
-			sgl_buf->next = NULL;
-			TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(sgl_buf,
-					auth_tag_len - sgl_buf->data_len),
-					"No room to append auth tag");
+			uint16_t next_data_len = 0;
+			if (sgl_buf->next != NULL) {
+				next_data_len = sgl_buf->next->data_len;
+
+				rte_pktmbuf_free(sgl_buf->next);
+				sgl_buf->next = NULL;
+				sgl_buf_head->nb_segs -= 1;
+				sgl_buf_head->pkt_len -= next_data_len;
+			}
+			TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(
+						sgl_buf_head, auth_tag_len - sgl_buf->data_len),
+						"No room to append auth tag");
 		}
 
 		sym_op->auth.digest.data = rte_pktmbuf_mtod_offset(sgl_buf,
@@ -8871,11 +8880,13 @@ test_pdcp_proto_SGL(int i, int oop,
 			buf_oop = buf_oop->next;
 			memset(rte_pktmbuf_mtod(buf_oop, uint8_t *),
 					0, rte_pktmbuf_tailroom(buf_oop));
-			rte_pktmbuf_append(buf_oop, to_trn);
+			TEST_ASSERT_NOT_NULL(ut_params->obuf, "Output buffer not initialized");
+			TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(ut_params->obuf, to_trn), "Failed to append to mbuf");
 		}
 
-		plaintext = (uint8_t *)rte_pktmbuf_append(buf,
+		plaintext = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
 				to_trn);
+		TEST_ASSERT_NOT_NULL(plaintext, "Failed to append plaintext");
 
 		memcpy(plaintext, input_vec + trn_data, to_trn);
 		trn_data += to_trn;
@@ -8904,7 +8915,7 @@ test_pdcp_proto_SGL(int i, int oop,
 			buf_oop = buf_oop->next;
 			memset(rte_pktmbuf_mtod(buf_oop, uint8_t *),
 					0, rte_pktmbuf_tailroom(buf_oop));
-			rte_pktmbuf_append(buf_oop, to_trn);
+			TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(ut_params->obuf, to_trn), "Failed to append to mbuf");
 
 			trn_data += to_trn;
 		}
@@ -13426,15 +13437,18 @@ test_AES_GMAC_authentication_SGL(const struct gmac_test_data *tdata,
 		memset(rte_pktmbuf_mtod(buf, uint8_t *), 0,
 				rte_pktmbuf_tailroom(buf));
 
-		plaintext = (uint8_t *)rte_pktmbuf_append(buf,
+		plaintext = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
 				to_trn);
+		TEST_ASSERT_NOT_NULL(plaintext, "Failed to append plaintext");
 
 		memcpy(plaintext, tdata->plaintext.data + trn_data,
 				to_trn);
 		trn_data += to_trn;
-		if (trn_data  == tdata->plaintext.len)
-			digest_mem = (uint8_t *)rte_pktmbuf_append(buf,
+		if (trn_data  == tdata->plaintext.len) {
+			digest_mem = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
 					tdata->gmac_tag.len);
+			TEST_ASSERT_NOT_NULL(digest_mem, "Failed to append digest data");
+		}
 	}
 	ut_params->ibuf->nb_segs = segs;
 
@@ -14717,23 +14731,28 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
 			buf_oop = buf_oop->next;
 			memset(rte_pktmbuf_mtod(buf_oop, uint8_t *),
 					0, rte_pktmbuf_tailroom(buf_oop));
-			rte_pktmbuf_append(buf_oop, to_trn);
+			TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(ut_params->obuf, to_trn), "Failed to append to mbuf");
 		}
 
-		plaintext = (uint8_t *)rte_pktmbuf_append(buf,
+		plaintext = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
 				to_trn);
+		TEST_ASSERT_NOT_NULL(plaintext, "Failed to append plaintext");
 
 		memcpy(plaintext, tdata->plaintext.data + trn_data,
 				to_trn);
 		trn_data += to_trn;
 		if (trn_data  == tdata->plaintext.len) {
 			if (oop) {
-				if (!fragsz_oop)
-					digest_mem = rte_pktmbuf_append(buf_oop,
+				if (!fragsz_oop) {
+					digest_mem = rte_pktmbuf_append(ut_params->obuf,
 						tdata->auth_tag.len);
-			} else
-				digest_mem = (uint8_t *)rte_pktmbuf_append(buf,
+					TEST_ASSERT_NOT_NULL(digest_mem, "Failed to append auth tag");
+				}
+			} else {
+				digest_mem = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
 					tdata->auth_tag.len);
+				TEST_ASSERT_NOT_NULL(digest_mem, "Failed to append auth tag");
+			}
 		}
 	}
 
@@ -14768,16 +14787,18 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
 
 			buf_last_oop = buf_oop->next =
 					rte_pktmbuf_alloc(ts_params->mbuf_pool);
+			TEST_ASSERT_NOT_NULL(buf_oop->next, "Unexpected end of chain");
 			buf_oop = buf_oop->next;
 			memset(rte_pktmbuf_mtod(buf_oop, uint8_t *),
 					0, rte_pktmbuf_tailroom(buf_oop));
-			rte_pktmbuf_append(buf_oop, to_trn);
+			TEST_ASSERT_NOT_NULL(rte_pktmbuf_append(ut_params->obuf, to_trn), "Failed to append to mbuf");
 
 			trn_data += to_trn;
 
 			if (trn_data  == tdata->plaintext.len) {
-				digest_mem = rte_pktmbuf_append(buf_oop,
+				digest_mem = rte_pktmbuf_append(ut_params->obuf,
 					tdata->auth_tag.len);
+				TEST_ASSERT_NOT_NULL(digest_mem, "Failed to append auth tag");
 			}
 		}
 
-- 
2.47.3

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2025-10-27 15:54:37.508616334 +0000
+++ 0075-test-crypto-fix-mbuf-handling.patch	2025-10-27 15:54:34.859951155 +0000
@@ -1 +1 @@
-From 1ff54c055d95736aae05a40b361427215c318cc1 Mon Sep 17 00:00:00 2001
+From 6a8fd6242932862c080c41232f5b296dc05a59f7 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 1ff54c055d95736aae05a40b361427215c318cc1 ]
+
@@ -18 +19,0 @@
-Cc: stable at dpdk.org
@@ -27 +28 @@
-index 5229ac2bf6..f092f608a9 100644
+index 8d58510e2d..6dc6dfb9c5 100644
@@ -30 +31 @@
-@@ -3488,6 +3488,8 @@ create_wireless_algo_auth_cipher_operation(
+@@ -3000,6 +3000,8 @@ create_wireless_algo_auth_cipher_operation(
@@ -39 +40 @@
-@@ -3495,11 +3497,18 @@ create_wireless_algo_auth_cipher_operation(
+@@ -3007,11 +3009,18 @@ create_wireless_algo_auth_cipher_operation(
@@ -63 +64 @@
-@@ -9795,11 +9804,13 @@ test_pdcp_proto_SGL(int i, int oop,
+@@ -8871,11 +8880,13 @@ test_pdcp_proto_SGL(int i, int oop,
@@ -79 +80 @@
-@@ -9828,7 +9839,7 @@ test_pdcp_proto_SGL(int i, int oop,
+@@ -8904,7 +8915,7 @@ test_pdcp_proto_SGL(int i, int oop,
@@ -88 +89 @@
-@@ -15916,15 +15927,18 @@ test_AES_GMAC_authentication_SGL(const struct gmac_test_data *tdata,
+@@ -13426,15 +13437,18 @@ test_AES_GMAC_authentication_SGL(const struct gmac_test_data *tdata,
@@ -110 +111 @@
-@@ -17223,23 +17237,28 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
+@@ -14717,23 +14731,28 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
@@ -145 +146 @@
-@@ -17274,16 +17293,18 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,
+@@ -14768,16 +14787,18 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,


More information about the stable mailing list