On 6/22/22 17:30, David Marchand wrote:
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: 7287660a21e0 ("vhost/crypto: fix build with GCC 12")
Reported-by: Jakub Poczatek <jakub.pocza...@intel.com>
Signed-off-by: David Marchand <david.march...@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coque...@redhat.com>
And also, from discussions on the faulty commit thread, we can add:
Tested-by: Jakub Poczatek <jakub.pocza...@intel.com>
Thanks Jakub for the quick testing,
Maxime
---
lib/vhost/vhost_crypto.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/lib/vhost/vhost_crypto.c b/lib/vhost/vhost_crypto.c
index 96ffb82a5d..54946f46d9 100644
--- a/lib/vhost/vhost_crypto.c
+++ b/lib/vhost/vhost_crypto.c
@@ -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;