[dpdk-dev] [PATCH v2] vhost: fix passing destroyed device to destroy callback
Ilya Maximets
i.maximets at samsung.com
Fri Apr 12 10:32:28 CEST 2019
Application should be able to obtain information like 'ifname' from
the 'vid' passed to 'destroy_connection' callback. Currently, all the
API calls with passed 'vid' fails with 'device not found'.
Fixes: efba12a78ddf ("vhost: add user callbacks for socket open/close")
Cc: stable at dpdk.org
Signed-off-by: Ilya Maximets <i.maximets at samsung.com>
---
Version 2:
* Fixed wrong order of 'destroy_device' and 'destroy_connection'.
lib/librte_vhost/socket.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/lib/librte_vhost/socket.c b/lib/librte_vhost/socket.c
index 3da9de62c..af09dfa17 100644
--- a/lib/librte_vhost/socket.c
+++ b/lib/librte_vhost/socket.c
@@ -295,13 +295,19 @@ vhost_user_read_cb(int connfd, void *dat, int *remove)
ret = vhost_user_msg_handler(conn->vid, connfd);
if (ret < 0) {
+ struct virtio_net *dev = get_device(conn->vid);
+
close(connfd);
*remove = 1;
- vhost_destroy_device(conn->vid);
+
+ if (dev)
+ vhost_destroy_device_notify(dev);
if (vsocket->notify_ops->destroy_connection)
vsocket->notify_ops->destroy_connection(conn->vid);
+ vhost_destroy_device(conn->vid);
+
pthread_mutex_lock(&vsocket->conn_mutex);
TAILQ_REMOVE(&vsocket->conn_list, conn, next);
pthread_mutex_unlock(&vsocket->conn_mutex);
--
2.17.1
More information about the dev
mailing list