On 10/04/2018 04:59 PM, Ilya Maximets wrote:
On 04.10.2018 11:13, Maxime Coquelin wrote:
When the memory table gets updated, the rings addresses need
to be translated again. If it fails, we need to exit cleanly
by unmapping memory regions.
Fixes: d5022533c20a ("vhost: retranslate vring addr when memory table changes")
Cc: sta...@dpdk.org
Signed-off-by: Maxime Coquelin <maxime.coque...@redhat.com>
---
Acked-by: Ilya Maximets <i.maxim...@samsung.com>
Minor comments inline.
lib/librte_vhost/vhost_user.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index 8ffe5aa66..b6eae8dc5 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -964,7 +964,8 @@ vhost_user_set_mem_table(struct virtio_net **pdev, struct
VhostUserMsg *msg)
dev = translate_ring_addresses(dev, i);
if (!dev)
- return VH_RESULT_ERR;
+ goto err_mmap;
+
1. No need to have two empty lines. (You could fix this while applying)
Right. I will either fix it while applying, or it will be in next
revision, if any.
2. In current code, error on message handling will cause disconnect and
memory regions will be freed anyway. So, the change is not very
important for master (maybe just for consistency with surrounding
code) but it could be important for stable versions.
I may not disconnect directly, as if reply-ack feature is negotiated[0],
the slave would reply with a NACK and function handler will return 0.
I guess that in that case the master (QEMU) will disconnect anyway, but
this is just an assumption from slave point of view.
[0]: REPLY_ACK protocol feature is only advertised when IOMMU support is
requested because of a bug in an old upstream QEMU version.
Thanks!
Maxime
*pdev = dev;
}