* [PATCH] test/crypto: fix for mbuf sanity check failure
@ 2025-09-23 14:22 Nithinsen Kaithakadan
0 siblings, 0 replies; only message in thread
From: Nithinsen Kaithakadan @ 2025-09-23 14:22 UTC (permalink / raw)
To: dev
Cc: anoobj, ktejasree, gakhil, kai.ji, ciara.power,
pablo.de.lara.guarch, arkadiuszx.kusztal
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@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 5229ac2bf6..f092f608a9 100644
--- a/app/test/test_cryptodev.c
+++ b/app/test/test_cryptodev.c
@@ -3488,6 +3488,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;
@@ -3495,11 +3497,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,
@@ -9795,11 +9804,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;
@@ -9828,7 +9839,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;
}
@@ -15916,15 +15927,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;
@@ -17223,23 +17237,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");
+ }
}
}
@@ -17274,16 +17293,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.48.1
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2025-09-23 14:23 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-09-23 14:22 [PATCH] test/crypto: fix for mbuf sanity check failure Nithinsen Kaithakadan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).