On Fri, Apr 10, 2015 at 02:59:26PM +0200, Bart Van Assche wrote: > __transport_register_session() must be called with se_tpg->session_lock > held. Fix the call sites where this lock is not held. > > Signed-off-by: Bart Van Assche <bart.vanassche@xxxxxxxxxxx> > Cc: Christoph Hellwig <hch@xxxxxx> > Cc: <qla2xxx-upstream@xxxxxxxxxx> > Cc: Felipe Balbi <balbi@xxxxxx> > Cc: Michael S. Tsirkin <mst@xxxxxxxxxx> > Cc: Juergen Gross <jgross@xxxxxxxx> Acked-by: Felipe Balbi <balbi@xxxxxx> > --- > drivers/scsi/qla2xxx/tcm_qla2xxx.c | 6 ++---- > drivers/target/loopback/tcm_loop.c | 7 ++----- > drivers/usb/gadget/legacy/tcm_usb_gadget.c | 5 ++--- > drivers/vhost/scsi.c | 5 ++--- > drivers/xen/xen-scsiback.c | 7 ++----- > 5 files changed, 10 insertions(+), 20 deletions(-) > > diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c > index 6d2d850..04536f8 100644 > --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c > +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c > @@ -1645,10 +1645,8 @@ static int tcm_qla2xxx_check_initiator_node_acl( > tcm_qla2xxx_set_sess_by_loop_id(lport, se_nacl, nacl, se_sess, > qla_tgt_sess, loop_id); > spin_unlock_irqrestore(&ha->hardware_lock, flags); > - /* > - * Finally register the new FC Nexus with TCM > - */ > - __transport_register_session(se_nacl->se_tpg, se_nacl, se_sess, sess); > + /* Finally register the new FC Nexus with TCM */ > + transport_register_session(se_nacl->se_tpg, se_nacl, se_sess, sess); > > return 0; > } > diff --git a/drivers/target/loopback/tcm_loop.c b/drivers/target/loopback/tcm_loop.c > index 5b143d2..51f0c89 100644 > --- a/drivers/target/loopback/tcm_loop.c > +++ b/drivers/target/loopback/tcm_loop.c > @@ -1000,11 +1000,8 @@ static int tcm_loop_make_nexus( > transport_free_session(tl_nexus->se_sess); > goto out; > } > - /* > - * Now, register the SAS I_T Nexus as active with the call to > - * transport_register_session() > - */ > - __transport_register_session(se_tpg, tl_nexus->se_sess->se_node_acl, > + /* Now, register the SAS I_T Nexus as active. */ > + transport_register_session(se_tpg, tl_nexus->se_sess->se_node_acl, > tl_nexus->se_sess, tl_nexus); > tl_tpg->tl_nexus = tl_nexus; > pr_debug("TCM_Loop_ConfigFS: Established I_T Nexus to emulated" > diff --git a/drivers/usb/gadget/legacy/tcm_usb_gadget.c b/drivers/usb/gadget/legacy/tcm_usb_gadget.c > index 7ea2a44c..8b80add 100644 > --- a/drivers/usb/gadget/legacy/tcm_usb_gadget.c > +++ b/drivers/usb/gadget/legacy/tcm_usb_gadget.c > @@ -1739,10 +1739,9 @@ static int tcm_usbg_make_nexus(struct usbg_tpg *tpg, char *name) > goto err_session; > } > /* > - * Now register the TCM vHost virtual I_T Nexus as active with the > - * call to __transport_register_session() > + * Now register the TCM vHost virtual I_T Nexus as active. > */ > - __transport_register_session(se_tpg, tv_nexus->tvn_se_sess->se_node_acl, > + transport_register_session(se_tpg, tv_nexus->tvn_se_sess->se_node_acl, > tv_nexus->tvn_se_sess, tv_nexus); > tpg->tpg_nexus = tv_nexus; > mutex_unlock(&tpg->tpg_mutex); > diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c > index 40c1b3f..9028396 100644 > --- a/drivers/vhost/scsi.c > +++ b/drivers/vhost/scsi.c > @@ -2003,10 +2003,9 @@ static int vhost_scsi_make_nexus(struct vhost_scsi_tpg *tpg, > goto out; > } > /* > - * Now register the TCM vhost virtual I_T Nexus as active with the > - * call to __transport_register_session() > + * Now register the TCM vhost virtual I_T Nexus as active. > */ > - __transport_register_session(se_tpg, tv_nexus->tvn_se_sess->se_node_acl, > + transport_register_session(se_tpg, tv_nexus->tvn_se_sess->se_node_acl, > tv_nexus->tvn_se_sess, tv_nexus); > tpg->tpg_nexus = tv_nexus; > > diff --git a/drivers/xen/xen-scsiback.c b/drivers/xen/xen-scsiback.c > index f8a1bd7..49a3499 100644 > --- a/drivers/xen/xen-scsiback.c > +++ b/drivers/xen/xen-scsiback.c > @@ -1660,11 +1660,8 @@ static int scsiback_make_nexus(struct scsiback_tpg *tpg, > name); > goto out; > } > - /* > - * Now register the TCM pvscsi virtual I_T Nexus as active with the > - * call to __transport_register_session() > - */ > - __transport_register_session(se_tpg, tv_nexus->tvn_se_sess->se_node_acl, > + /* Now register the TCM pvscsi virtual I_T Nexus as active. */ > + transport_register_session(se_tpg, tv_nexus->tvn_se_sess->se_node_acl, > tv_nexus->tvn_se_sess, tv_nexus); > tpg->tpg_nexus = tv_nexus; > > -- > 2.1.4 > -- balbi
Attachment:
signature.asc
Description: Digital signature