nvmf/vfio-user: use transport lock to iterate endpoints
We should hold the transport lock to iterate endpoints. Fix issue #2313. Change-Id: I8e0539a51e843a3299908d9da7749fe9becb5e7e Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11037 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Dong Yi <dongx.yi@intel.com> Reviewed-by: John Levon <levon@movementarian.org>
This commit is contained in:
parent
b7775dae8e
commit
69dc63da50
@ -2202,7 +2202,10 @@ nvmf_vfio_user_listen(struct spdk_nvmf_transport *transport,
|
||||
goto out;
|
||||
}
|
||||
|
||||
pthread_mutex_lock(&vu_transport->lock);
|
||||
TAILQ_INSERT_TAIL(&vu_transport->endpoints, endpoint, link);
|
||||
pthread_mutex_unlock(&vu_transport->lock);
|
||||
|
||||
SPDK_DEBUGLOG(nvmf_vfio, "%s: doorbells %p\n", uuid, endpoint->doorbells);
|
||||
|
||||
out:
|
||||
@ -2275,11 +2278,13 @@ nvmf_vfio_user_listen_associate(struct spdk_nvmf_transport *transport,
|
||||
|
||||
vu_transport = SPDK_CONTAINEROF(transport, struct nvmf_vfio_user_transport, transport);
|
||||
|
||||
pthread_mutex_lock(&vu_transport->lock);
|
||||
TAILQ_FOREACH(endpoint, &vu_transport->endpoints, link) {
|
||||
if (strncmp(endpoint->trid.traddr, trid->traddr, sizeof(endpoint->trid.traddr)) == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
pthread_mutex_unlock(&vu_transport->lock);
|
||||
|
||||
if (endpoint == NULL) {
|
||||
return -ENOENT;
|
||||
|
Loading…
x
Reference in New Issue
Block a user