From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9EDD248A44 for ; Fri, 31 Oct 2025 15:40:00 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 964BD4069F; Fri, 31 Oct 2025 15:40:00 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id D810F40150 for ; Fri, 31 Oct 2025 15:39:58 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1761921598; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=lbyiYK9Z57nKvBkRropTilQJeChG0hy9XvlRoStSM5s=; b=QdubP+GCSffOSNsyyh9wkaBZ3G9jK9pJxTTY5nKXk34enWsNl1OK69MN1zfYIQ64sgzlol jCxSBFOuPedS0Ix3b1I3lKzTmVuwSZgF65K0ZkZwmpQhcdRFjEyYFdktCrVrygVk6ahaNO /wlIfWOg+EPUj4ui0TXaH4IsfA135VY= Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-404-ClGjP2ASNWajR_0CD2KabQ-1; Fri, 31 Oct 2025 10:39:55 -0400 X-MC-Unique: ClGjP2ASNWajR_0CD2KabQ-1 X-Mimecast-MFC-AGG-ID: ClGjP2ASNWajR_0CD2KabQ_1761921594 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 2E819180121E; Fri, 31 Oct 2025 14:39:54 +0000 (UTC) Received: from rh.redhat.com (unknown [10.44.32.50]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 9A2D818004D4; Fri, 31 Oct 2025 14:39:52 +0000 (UTC) From: Kevin Traynor To: Nithinsen Kaithakadan Cc: Akhil Goyal , dpdk stable Subject: patch 'test/crypto: fix mbuf handling' has been queued to stable release 24.11.4 Date: Fri, 31 Oct 2025 14:34:04 +0000 Message-ID: <20251031143421.324432-122-ktraynor@redhat.com> In-Reply-To: <20251031143421.324432-1-ktraynor@redhat.com> References: <20251031143421.324432-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: TNOSuYFIT9XfFkwNOwc78ou-ir-2-RurNY_Q-_5_DjA_1761921594 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 24.11.4 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/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/kevintraynor/dpdk-stable This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable/commit/c887c7dffa80bd217098fc6fab1e7e0f25f107a5 Thanks. Kevin --- >From c887c7dffa80bd217098fc6fab1e7e0f25f107a5 Mon Sep 17 00:00:00 2001 From: Nithinsen Kaithakadan 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 Acked-by: Akhil Goyal --- 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 8a175b9e70..540373e452 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -3460,4 +3460,6 @@ create_wireless_algo_auth_cipher_operation( 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); @@ -3467,9 +3469,16 @@ 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"); } @@ -9767,9 +9776,11 @@ test_pdcp_proto_SGL(int i, int oop, 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); @@ -9800,5 +9811,5 @@ test_pdcp_proto_SGL(int i, int oop, 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; @@ -15872,13 +15883,16 @@ test_AES_GMAC_authentication_SGL(const struct gmac_test_data *tdata, 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; @@ -17177,9 +17191,10 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata, 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, @@ -17188,10 +17203,14 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata, 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"); + } } } @@ -17228,14 +17247,16 @@ 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.51.0 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2025-10-31 13:53:55.898071652 +0000 +++ 0122-test-crypto-fix-mbuf-handling.patch 2025-10-31 13:53:52.312524230 +0000 @@ -1 +1 @@ -From 1ff54c055d95736aae05a40b361427215c318cc1 Mon Sep 17 00:00:00 2001 +From c887c7dffa80bd217098fc6fab1e7e0f25f107a5 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 1ff54c055d95736aae05a40b361427215c318cc1 ] + @@ -18 +19,0 @@ -Cc: stable@dpdk.org @@ -27 +28 @@ -index 5229ac2bf6..f092f608a9 100644 +index 8a175b9e70..540373e452 100644 @@ -30 +31 @@ -@@ -3489,4 +3489,6 @@ create_wireless_algo_auth_cipher_operation( +@@ -3460,4 +3460,6 @@ create_wireless_algo_auth_cipher_operation( @@ -37 +38 @@ -@@ -3496,9 +3498,16 @@ create_wireless_algo_auth_cipher_operation( +@@ -3467,9 +3469,16 @@ create_wireless_algo_auth_cipher_operation( @@ -59 +60 @@ -@@ -9796,9 +9805,11 @@ test_pdcp_proto_SGL(int i, int oop, +@@ -9767,9 +9776,11 @@ test_pdcp_proto_SGL(int i, int oop, @@ -73 +74 @@ -@@ -9829,5 +9840,5 @@ test_pdcp_proto_SGL(int i, int oop, +@@ -9800,5 +9811,5 @@ test_pdcp_proto_SGL(int i, int oop, @@ -80 +81 @@ -@@ -15917,13 +15928,16 @@ test_AES_GMAC_authentication_SGL(const struct gmac_test_data *tdata, +@@ -15872,13 +15883,16 @@ test_AES_GMAC_authentication_SGL(const struct gmac_test_data *tdata, @@ -100 +101 @@ -@@ -17224,9 +17238,10 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata, +@@ -17177,9 +17191,10 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata, @@ -113 +114 @@ -@@ -17235,10 +17250,14 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata, +@@ -17188,10 +17203,14 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata, @@ -132 +133 @@ -@@ -17275,14 +17294,16 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata, +@@ -17228,14 +17247,16 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,