The segment size for some tests was too small to hold the auth digest.
This caused issues when using op->sym->auth.digest.data for comparisons
in AESNI_MB PMD after a subsequent patch enables SGL.

For example, if segment size is 2, and digest size is 4, then 4 bytes
are read from op->sym->auth.digest.data, which overflows into the memory
after the segment, rather than using the second segment that contains
the remaining half of the digest.

Fixes: 11c5485bb276 ("test/crypto: add scatter-gather tests for IP and OOP")

Signed-off-by: Ciara Power <ciara.po...@intel.com>
---
 app/test/test_cryptodev.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
index 69a0301de0..e6925b6531 100644
--- a/app/test/test_cryptodev.c
+++ b/app/test/test_cryptodev.c
@@ -3040,6 +3040,14 @@ create_wireless_algo_auth_cipher_operation(
                        remaining_off -= rte_pktmbuf_data_len(sgl_buf);
                        sgl_buf = sgl_buf->next;
                }
+
+               /* 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;
+                       rte_pktmbuf_append(sgl_buf, auth_tag_len - 
sgl_buf->data_len);
+               }
+
                sym_op->auth.digest.data = rte_pktmbuf_mtod_offset(sgl_buf,
                                uint8_t *, remaining_off);
                sym_op->auth.digest.phys_addr = rte_pktmbuf_iova_offset(sgl_buf,
-- 
2.25.1

Reply via email to