compress/isal: fix offset check
authorLee Daly <lee.daly@intel.com>
Wed, 1 Aug 2018 13:23:43 +0000 (14:23 +0100)
committerPablo de Lara <pablo.de.lara.guarch@intel.com>
Fri, 3 Aug 2018 07:14:24 +0000 (09:14 +0200)
This commit fixes an offset check in decompression which was checking
destination offset size against dst data_len rather than checking
against dst pkt_len as required, to support single and multi-segment
buffers.

Fixes: 788e748d3845 ("compress/isal: support chained mbufs")

Signed-off-by: Lee Daly <lee.daly@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
drivers/compress/isal/isal_compress_pmd.c

index e75f48d..e943336 100644 (file)
@@ -404,9 +404,9 @@ process_isal_deflate(struct rte_comp_op *op, struct isal_comp_qp *qp,
                return -1;
        }
 
-       if (op->dst.offset > op->m_dst->pkt_len) {
-               ISAL_PMD_LOG(ERR, "Output mbuf(s) not big enough for length"
-                               " and offset provided.\n");
+       if (op->dst.offset >= op->m_dst->pkt_len) {
+               ISAL_PMD_LOG(ERR, "Output mbuf(s) not big enough"
+                               " for offset provided.\n");
                op->status = RTE_COMP_OP_STATUS_INVALID_ARGS;
                return -1;
        }
@@ -483,8 +483,8 @@ process_isal_inflate(struct rte_comp_op *op, struct isal_comp_qp *qp)
                return -1;
        }
 
-       if (op->dst.offset > op->m_dst->data_len) {
-               ISAL_PMD_LOG(ERR, "Output mbuf not big enough for length and "
+       if (op->dst.offset >= op->m_dst->pkt_len) {
+               ISAL_PMD_LOG(ERR, "Output mbuf not big enough for "
                                "offset provided.\n");
                op->status = RTE_COMP_OP_STATUS_INVALID_ARGS;
                return -1;