cryptodev: fix multi-segment raw vector processing
authorGagandeep Singh <g.singh@nxp.com>
Wed, 13 Oct 2021 19:00:21 +0000 (00:30 +0530)
committerAkhil Goyal <gakhil@marvell.com>
Sun, 17 Oct 2021 17:32:13 +0000 (19:32 +0200)
If no next segment available the “for” loop will fail and it still
returns i+1 i.e. 2, which is wrong as it has filled only 1 buffer.

Fixes: 7adf992fb9bf ("cryptodev: introduce CPU crypto API")
Cc: stable@dpdk.org
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
lib/cryptodev/rte_crypto_sym.h

index c907b16..daa090b 100644 (file)
@@ -990,6 +990,7 @@ rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len,
                        /* whole requested data is completed */
                        vec[i].len = left;
                        left = 0;
+                       i++;
                        break;
                }
 
@@ -999,7 +1000,7 @@ rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len,
        }
 
        RTE_ASSERT(left == 0);
-       return i + 1;
+       return i;
 }