vfio: fix read of freed memory on getting container fd
authorDarek Stojaczyk <dariusz.stojaczyk@intel.com>
Thu, 25 Oct 2018 10:49:10 +0000 (12:49 +0200)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 29 Oct 2018 00:59:48 +0000 (01:59 +0100)
We were reading some memory just after freeing it.

Fixes: 83a73c5fef66 ("vfio: use generic multi-process channel")
Cc: stable@dpdk.org
Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
lib/librte_eal/linuxapp/eal/eal_vfio.c

index 7d5b964..13a8b18 100644 (file)
@@ -1042,8 +1042,9 @@ rte_vfio_get_container_fd(void)
                mp_rep = &mp_reply.msgs[0];
                p = (struct vfio_mp_param *)mp_rep->param;
                if (p->result == SOCKET_OK && mp_rep->num_fds == 1) {
+                       vfio_container_fd = mp_rep->fds[0];
                        free(mp_reply.msgs);
-                       return mp_rep->fds[0];
+                       return vfio_container_fd;
                }
                free(mp_reply.msgs);
        }