Commit 69738981 authored by Dariusz Stojaczyk's avatar Dariusz Stojaczyk Committed by Jim Harris
Browse files

vhost: wrap vhost_user_read_cb with vhost_user mutex



This fixes spontaneous vhost hangs on SIGINT shutdown.
Apperently during vhost_destroy_device(conn->vid) from
line #284 another QEMU message might arrive, causing
vsocket->conn_mutex deadlock. (line #286)

Change-Id: I4f1c31a52facffd1eb1e1192591095f00da55031
Signed-off-by: default avatarDariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
parent f4cd3c08
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -277,6 +277,8 @@ vhost_user_read_cb(int connfd, void *dat, int *remove)

	ret = vhost_user_msg_handler(conn->vid, connfd);
	if (ret < 0) {
		pthread_mutex_lock(&vhost_user.mutex);

		close(connfd);
		*remove = 1;
		vhost_destroy_device(conn->vid);
@@ -291,6 +293,8 @@ vhost_user_read_cb(int connfd, void *dat, int *remove)
			create_unix_socket(vsocket);
			vhost_user_start_client(vsocket);
		}

		pthread_mutex_unlock(&vhost_user.mutex);
	}
}