[dpdk-dev] [PATCH 2/2] vhost: don't take access_lock on VHOST_USER_RESET_OWNER
Maxime Coquelin
maxime.coquelin at redhat.com
Fri Feb 9 15:26:54 CET 2018
A deadlock happens when handling VHOST_USER_RESET_OWNER request
for the same reason the lock is not taken for
VHOST_USER_GET_VRING_BASE.
It is safe not to take the lock, as the queues are no more used
by the application when the virtqueues and the device are reset.
Fixes: a3688046995f ("vhost: protect active rings from async ring changes")
Cc: stable at dpdk.org
Cc: Victor Kaplansky <victork at redhat.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin at redhat.com>
---
lib/librte_vhost/vhost_user.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index 65ee33919..90ed2112e 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -1348,16 +1348,16 @@ vhost_user_msg_handler(int vid, int fd)
}
/*
- * Note: we don't lock all queues on VHOST_USER_GET_VRING_BASE,
- * since it is sent when virtio stops and device is destroyed.
- * destroy_device waits for queues to be inactive, so it is safe.
- * Otherwise taking the access_lock would cause a dead lock.
+ * Note: we don't lock all queues on VHOST_USER_GET_VRING_BASE
+ * and VHOST_USER_RESET_OWNER, since it is sent when virtio stops
+ * and device is destroyed. destroy_device waits for queues to be
+ * inactive, so it is safe. Otherwise taking the access_lock
+ * would cause a dead lock.
*/
switch (msg.request.master) {
case VHOST_USER_SET_FEATURES:
case VHOST_USER_SET_PROTOCOL_FEATURES:
case VHOST_USER_SET_OWNER:
- case VHOST_USER_RESET_OWNER:
case VHOST_USER_SET_MEM_TABLE:
case VHOST_USER_SET_LOG_BASE:
case VHOST_USER_SET_LOG_FD:
--
2.14.3
More information about the dev
mailing list