crypto/qat: fix ccm null aad pointer segfault

Message ID 20240308082512.5226-1-arkadiuszx.kusztal@intel.com (mailing list archive)
State Accepted, archived
Delegated to: akhil goyal
Headers
Series crypto/qat: fix ccm null aad pointer segfault |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/github-robot: build success github build: passed
ci/intel-Functional success Functional PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-unit-amd64-testing fail Testing issues
ci/iol-compile-amd64-testing success Testing PASS
ci/iol-unit-arm64-testing success Testing PASS
ci/iol-compile-arm64-testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-sample-apps-testing success Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-broadcom-Functional success Functional Testing PASS

Commit Message

Arkadiusz Kusztal March 8, 2024, 8:25 a.m. UTC
  This commit fixes a segfault, that occurs when NULL pointer
is being set to the aad pointer field.

Fixes: a815a04cea05 ("crypto/qat: support symmetric build op request")
Cc: stable@dpdk.org

Signed-off-by: Arkadiusz Kusztal <arkadiuszx.kusztal@intel.com>
---
 drivers/crypto/qat/dev/qat_crypto_pmd_gens.h | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
  

Comments

Power, Ciara March 11, 2024, 2:35 p.m. UTC | #1
> -----Original Message-----
> From: Kusztal, ArkadiuszX <arkadiuszx.kusztal@intel.com>
> Sent: Friday, March 8, 2024 8:25 AM
> To: dev@dpdk.org
> Cc: gakhil@marvell.com; Power, Ciara <ciara.power@intel.com>; Kusztal,
> ArkadiuszX <arkadiuszx.kusztal@intel.com>; stable@dpdk.org
> Subject: [PATCH] crypto/qat: fix ccm null aad pointer segfault
> 
> This commit fixes a segfault, that occurs when NULL pointer is being set to the
> aad pointer field.
> 
> Fixes: a815a04cea05 ("crypto/qat: support symmetric build op request")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Arkadiusz Kusztal <arkadiuszx.kusztal@intel.com>
> ---
>  drivers/crypto/qat/dev/qat_crypto_pmd_gens.h | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
> 


The CI fail looks to be unrelated to this patch:

 70/112 DPDK:fast-tests / pcapng_autotest                FAIL             6.39s   (exit status 255 or signal 127 SIGinvalid)

Ok:                 101 
Expected Fail:      0   
Fail:               1


Acked-by: Ciara Power <ciara.power@intel.com>
  
Akhil Goyal March 13, 2024, 2:51 p.m. UTC | #2
> > Subject: [PATCH] crypto/qat: fix ccm null aad pointer segfault
> >
> > This commit fixes a segfault, that occurs when NULL pointer is being set to the
> > aad pointer field.
> >
> > Fixes: a815a04cea05 ("crypto/qat: support symmetric build op request")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Arkadiusz Kusztal <arkadiuszx.kusztal@intel.com>
> > ---
> >  drivers/crypto/qat/dev/qat_crypto_pmd_gens.h | 10 ++++++----
> >  1 file changed, 6 insertions(+), 4 deletions(-)
> >
> 
> 
> The CI fail looks to be unrelated to this patch:
> 
>  70/112 DPDK:fast-tests / pcapng_autotest                FAIL             6.39s   (exit status
> 255 or signal 127 SIGinvalid)
> 
> Ok:                 101
> Expected Fail:      0
> Fail:               1
> 
> 
> Acked-by: Ciara Power <ciara.power@intel.com>

Applied to dpdk-next-crypto
Thanks.
  

Patch

diff --git a/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h b/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
index eebf2e6eb8..83a6c30218 100644
--- a/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
+++ b/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
@@ -881,10 +881,12 @@  enqueue_one_aead_job_gen1(struct qat_sym_session *ctx,
 		*(uint8_t *)&cipher_param->u.cipher_IV_array[0] =
 			q - ICP_QAT_HW_CCM_NONCE_OFFSET;
 
-		rte_memcpy((uint8_t *)aad->va +
-				ICP_QAT_HW_CCM_NONCE_OFFSET,
-			(uint8_t *)iv->va + ICP_QAT_HW_CCM_NONCE_OFFSET,
-			ctx->cipher_iv.length);
+		if (ctx->aad_len > 0) {
+			rte_memcpy((uint8_t *)aad->va +
+					ICP_QAT_HW_CCM_NONCE_OFFSET,
+				(uint8_t *)iv->va + ICP_QAT_HW_CCM_NONCE_OFFSET,
+				ctx->cipher_iv.length);
+		}
 		break;
 	default:
 		break;