This has us hold the tv_tpg_mutex when decrementing the tv_tpg_vhost_count in vhost_scsi_set_endpoint's failure path. We currently don't need to because we are holding the vhost_scsi_mutex and the dev.mutex when incrementing/decrementing in the normal paths, and we can't hit the tv_tpg_port_count check in vhost_scsi_drop_nexus during this time because there is a nexus and we have a refcount to the tpg. In the next patch we will change when we hold the vhost_scsi_mutex, so it's not always held in set/clear endpoint and in the future we might change the dev.mutex use, so this future proofs us. Signed-off-by: Mike Christie <michael.christie@xxxxxxxxxx> --- drivers/vhost/scsi.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c index d5ecb8876fc9..c31659aa5466 100644 --- a/drivers/vhost/scsi.c +++ b/drivers/vhost/scsi.c @@ -1658,7 +1658,9 @@ vhost_scsi_set_endpoint(struct vhost_scsi *vs, for (i = 0; i < VHOST_SCSI_MAX_TARGET; i++) { tpg = vs_tpg[i]; if (tpg) { + mutex_lock(&tpg->tv_tpg_mutex); tpg->tv_tpg_vhost_count--; + mutex_unlock(&tpg->tv_tpg_mutex); target_undepend_item(&tpg->se_tpg.tpg_group.cg_item); } } -- 2.25.1