From: Anoob Joseph <anoobj@marvell.com>
To: Akhil Goyal <akhil.goyal@nxp.com>
Cc: Archana Muniganti <marchana@marvell.com>, <dev@dpdk.org>,
Anoob Joseph <anoobj@marvell.com>
Subject: [dpdk-dev] [PATCH 5/6] common/cpt: fix fill_sg_comp api for zero datalen
Date: Wed, 5 Feb 2020 18:46:17 +0530 [thread overview]
Message-ID: <1580908578-3384-6-git-send-email-anoobj@marvell.com> (raw)
In-Reply-To: <1580908578-3384-1-git-send-email-anoobj@marvell.com>
From: Archana Muniganti <marchana@marvell.com>
fill_sg_comp_from_iov() prepares gather components for i/p IOV
buffers and extra buf. This API is failing to create a gather component
for extra_buf when IOV buf len is zero. Though there is enough space
to accommodate extra_buf, because of pre-decrementing of extra_buf
length from aggregate size, this issue is seen.
Fixes: b74652f3a91f ("common/cpt: add microcode interface for encryption")
Signed-off-by: Archana Muniganti <marchana@marvell.com>
Signed-off-by: Anoob Joseph <anoobj@marvell.com>
---
drivers/common/cpt/cpt_ucode.h | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/drivers/common/cpt/cpt_ucode.h b/drivers/common/cpt/cpt_ucode.h
index 081249c..c310ea7 100644
--- a/drivers/common/cpt/cpt_ucode.h
+++ b/drivers/common/cpt/cpt_ucode.h
@@ -373,7 +373,7 @@ fill_sg_comp_from_iov(sg_comp_t *list,
{
int32_t j;
uint32_t extra_len = extra_buf ? extra_buf->size : 0;
- uint32_t size = *psize - extra_len;
+ uint32_t size = *psize;
buf_ptr_t *bufs;
bufs = from->bufs;
@@ -382,9 +382,6 @@ fill_sg_comp_from_iov(sg_comp_t *list,
uint32_t e_len;
sg_comp_t *to = &list[i >> 2];
- if (!bufs[j].size)
- continue;
-
if (unlikely(from_offset)) {
if (from_offset >= bufs[j].size) {
from_offset -= bufs[j].size;
@@ -416,18 +413,19 @@ fill_sg_comp_from_iov(sg_comp_t *list,
to->u.s.len[i % 4] = rte_cpu_to_be_16(e_len);
}
+ extra_len = RTE_MIN(extra_len, size);
/* Insert extra data ptr */
if (extra_len) {
i++;
to = &list[i >> 2];
to->u.s.len[i % 4] =
- rte_cpu_to_be_16(extra_buf->size);
+ rte_cpu_to_be_16(extra_len);
to->ptr[i % 4] =
rte_cpu_to_be_64(extra_buf->dma_addr);
-
- /* size already decremented by extra len */
+ size -= extra_len;
}
+ next_len = RTE_MIN(next_len, size);
/* insert the rest of the data */
if (next_len) {
i++;
--
2.7.4
next prev parent reply other threads:[~2020-02-05 13:17 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-05 13:16 [dpdk-dev] [PATCH 0/6] code improvements for OCTEON TX crypto PMDs Anoob Joseph
2020-02-05 13:16 ` [dpdk-dev] [PATCH 1/6] common/cpt: remove redundant bitswaps Anoob Joseph
2020-02-05 13:16 ` [dpdk-dev] [PATCH 2/6] crypto/octeontx2: add AES-GCM capabilities supported with new firmware Anoob Joseph
2020-02-05 13:16 ` [dpdk-dev] [PATCH 3/6] common/cpt: support variable key size for HMAC Anoob Joseph
2020-02-05 13:16 ` [dpdk-dev] [PATCH 4/6] common/cpt: fix error path when cipher and auth key are not set Anoob Joseph
2020-02-05 13:16 ` Anoob Joseph [this message]
2020-02-05 13:16 ` [dpdk-dev] [PATCH 6/6] common/cpt: removes self assignment code Anoob Joseph
2020-02-05 13:19 ` [dpdk-dev] [PATCH 0/6] code improvements for OCTEON TX crypto PMDs Anoob Joseph
2020-02-05 14:56 ` Akhil Goyal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1580908578-3384-6-git-send-email-anoobj@marvell.com \
--to=anoobj@marvell.com \
--cc=akhil.goyal@nxp.com \
--cc=dev@dpdk.org \
--cc=marchana@marvell.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).