On 31/08/2023 21:25, Markus Armbruster wrote: > qemu_rdma_save_page() reports polling error with error_report(), then > succeeds anyway. This is because the variable holding the polling > status *shadows* the variable the function returns. The latter > remains zero. > > Broken since day one, and duplicated more recently. > > Fixes: 2da776db4846 (rdma: core logic) > Fixes: b390afd8c50b (migration/rdma: Fix out of order wrid)
Thanks for the fixes > Signed-off-by: Markus Armbruster <arm...@redhat.com> Reviewed-by: Li Zhijian <lizhij...@fujitsu.com> > --- > migration/rdma.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/migration/rdma.c b/migration/rdma.c > index ca430d319d..b2e869aced 100644 > --- a/migration/rdma.c > +++ b/migration/rdma.c > @@ -3281,7 +3281,8 @@ static size_t qemu_rdma_save_page(QEMUFile *f, > */ > while (1) { > uint64_t wr_id, wr_id_in; > - int ret = qemu_rdma_poll(rdma, rdma->recv_cq, &wr_id_in, NULL); > + ret = qemu_rdma_poll(rdma, rdma->recv_cq, &wr_id_in, NULL); > + > if (ret < 0) { > error_report("rdma migration: polling error! %d", ret); > goto err; > @@ -3296,7 +3297,8 @@ static size_t qemu_rdma_save_page(QEMUFile *f, > > while (1) { > uint64_t wr_id, wr_id_in; > - int ret = qemu_rdma_poll(rdma, rdma->send_cq, &wr_id_in, NULL); > + ret = qemu_rdma_poll(rdma, rdma->send_cq, &wr_id_in, NULL); > + > if (ret < 0) { > error_report("rdma migration: polling error! %d", ret); > goto err;