]> git.droids-corp.org - dpdk.git/commitdiff
crypto/cnxk: fix extend tail calculation
authorAnoob Joseph <anoobj@marvell.com>
Fri, 17 Dec 2021 09:20:05 +0000 (14:50 +0530)
committerAkhil Goyal <gakhil@marvell.com>
Fri, 21 Jan 2022 09:17:35 +0000 (10:17 +0100)
If the packet size to be incremented after IPsec processing is less
than size of hdr (size incremented before submitting), then extend_tail
can become negative. Allow negative values for the variable.

Fixes: 67a87e89561c ("crypto/cnxk: add cn9k lookaside IPsec datapath")
Cc: stable@dpdk.org
Signed-off-by: Anoob Joseph <anoobj@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
drivers/crypto/cnxk/cn9k_ipsec_la_ops.h

index 2dc8913feb3d7f949c3d36924c4541eb2ca706e6..2b0261e057e696a546940d7e5e6ac0577fdea476 100644 (file)
@@ -77,9 +77,10 @@ process_outb_sa(struct rte_crypto_op *cop, struct cn9k_ipsec_sa *sa,
        const unsigned int hdr_len = sizeof(struct roc_ie_on_outb_hdr);
        struct rte_crypto_sym_op *sym_op = cop->sym;
        struct rte_mbuf *m_src = sym_op->m_src;
-       uint32_t dlen, rlen, extend_tail;
        struct roc_ie_on_outb_sa *out_sa;
        struct roc_ie_on_outb_hdr *hdr;
+       uint32_t dlen, rlen;
+       int32_t extend_tail;
 
        out_sa = &sa->out_sa;
 
@@ -88,7 +89,8 @@ process_outb_sa(struct rte_crypto_op *cop, struct cn9k_ipsec_sa *sa,
 
        extend_tail = rlen - dlen;
        if (unlikely(extend_tail > rte_pktmbuf_tailroom(m_src))) {
-               plt_dp_err("Not enough tail room");
+               plt_dp_err("Not enough tail room (required: %d, available: %d",
+                          extend_tail, rte_pktmbuf_tailroom(m_src));
                return -ENOMEM;
        }