On 10/09/2018 01:35 PM, Tiwei Bie wrote:
On Mon, Oct 08, 2018 at 05:25:43PM +0200, 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: [email protected]

Signed-off-by: Maxime Coquelin <[email protected]>
Acked-by: Ilya Maximets <[email protected]>
---
  lib/librte_vhost/vhost_user.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index 71a0e7dd7..3f01926e2 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -964,7 +964,7 @@ 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;

When dev is NULL, we can't just goto err_mmap directly,
otherwise we will dereference the NULL pointer.

Indeed, thanks for catching it.
I think we should restore dev to *pdev value.

*pdev = dev;
                }
--
2.17.1

Reply via email to