vhost/crypto: fix descriptor processing
authorDavid Marchand <david.marchand@redhat.com>
Wed, 22 Jun 2022 15:30:20 +0000 (17:30 +0200)
committerMaxime Coquelin <maxime.coquelin@redhat.com>
Wed, 22 Jun 2022 16:58:31 +0000 (18:58 +0200)
copy_data was returning a pointer to an increased (off by one) descriptor.
Subsequent calls to copy_data in the library were then failing.
Fix this by incrementing the descriptor only if there is some left data
to copy.

Fixes: 4414bb67010d ("vhost/crypto: fix build with GCC 12")
Cc: stable@dpdk.org
Reported-by: Jakub Poczatek <jakub.poczatek@intel.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Tested-by: Jakub Poczatek <jakub.poczatek@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
lib/vhost/vhost_crypto.c

index 96ffb82..54946f4 100644 (file)
@@ -610,8 +610,7 @@ copy_data(void *data, struct vhost_crypto_data_req *vc_req,
                        return -1;
                left -= copied;
                data = RTE_PTR_ADD(data, copied);
-               desc++;
-       } while (desc < head + max_n_descs && left != 0);
+       } while (left != 0 && ++desc < head + max_n_descs);
 
        if (unlikely(left != 0))
                return -1;