[PATCH] crypto/qat: fix stack buffer overflow in SGL loop

Dooley, Brian brian.dooley at intel.com
Fri Apr 14 15:28:45 CEST 2023


Hi Ciara,

> -----Original Message-----
> From: Ciara Power <ciara.power at intel.com>
> Sent: Friday 14 April 2023 13:32
> To: Ji, Kai <kai.ji at intel.com>
> Cc: dev at dpdk.org; Power, Ciara <ciara.power at intel.com>; stable at dpdk.org
> Subject: [PATCH] crypto/qat: fix stack buffer overflow in SGL loop
>
> The cvec pointer was incremented incorrectly in the case where the length of
> remaining_off equals cvec len, and there is no next cvec.
> This led to cvec->iova being invalid memory to access.
>
> Instead, only increment the cvec pointer when we know there is a next cvec
> to point to, by checking the i value, which represents the number of cvecs
> available.
> If i is 0, then no need to increment as the current cvec is the last one.
>
> Fixes: a815a04cea05 ("crypto/qat: support symmetric build op request")
> Cc: kai.ji at intel.com
> Cc: stable at dpdk.org
>
> Signed-off-by: Ciara Power <ciara.power at intel.com>
> ---
>  drivers/crypto/qat/dev/qat_crypto_pmd_gens.h | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
> b/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
> index 524c291340..092265631b 100644
> --- a/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
> +++ b/drivers/crypto/qat/dev/qat_crypto_pmd_gens.h
> @@ -682,7 +682,8 @@ enqueue_one_chain_job_gen1(struct
> qat_sym_session *ctx,
>               while (remaining_off >= cvec->len && i >= 1) {
>                       i--;
>                       remaining_off -= cvec->len;
> -                     cvec++;
> +                     if (i)
> +                             cvec++;
>               }
>
>               auth_iova_end = cvec->iova + remaining_off;
> --
> 2.25.1

Acked-by: Brian Dooley <brian.dooley at intel.com>


More information about the stable mailing list