Hi Ciara, > -----Original Message----- > From: Ciara Power <ciara.po...@intel.com> > Sent: Friday 14 April 2023 13:32 > To: Ji, Kai <kai...@intel.com> > Cc: dev@dpdk.org; Power, Ciara <ciara.po...@intel.com>; sta...@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...@intel.com > Cc: sta...@dpdk.org > > Signed-off-by: Ciara Power <ciara.po...@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.doo...@intel.com>