Fixes: cd39f8e4fd2a ("vhost/crypto: add request handler") This patch fixes the descriptor moving for copy mode by adding the missing moving step after destination data parsing.
Signed-off-by: Fan Zhang <roy.fan.zh...@intel.com> --- lib/librte_vhost/vhost_crypto.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/librte_vhost/vhost_crypto.c b/lib/librte_vhost/vhost_crypto.c index ab75db0b1..363a034cb 100644 --- a/lib/librte_vhost/vhost_crypto.c +++ b/lib/librte_vhost/vhost_crypto.c @@ -694,6 +694,10 @@ prepare_sym_cipher_op(struct vhost_crypto *vcrypto, struct rte_crypto_op *op, case RTE_VHOST_CRYPTO_ZERO_COPY_DISABLE: vc_req->wb_desc = desc; vc_req->wb_len = cipher->para.dst_data_len; + if (unlikely(move_desc(head, &desc, vc_req->wb_len) < 0)) { + ret = VIRTIO_CRYPTO_ERR; + goto error_exit; + } break; default: ret = VIRTIO_CRYPTO_BADMSG; @@ -840,6 +844,11 @@ prepare_sym_chain_op(struct vhost_crypto *vcrypto, struct rte_crypto_op *op, op->sym->auth.digest.data = digest_addr; op->sym->auth.digest.phys_addr = rte_pktmbuf_iova_offset(m_dst, digest_offset); + if (unlikely(move_desc(head, &desc, + chain->para.hash_result_len) < 0)) { + ret = VIRTIO_CRYPTO_ERR; + goto error_exit; + } break; default: ret = VIRTIO_CRYPTO_BADMSG; -- 2.13.6