Re: [PATCH] target: Fix incorrect use of __transport_register_session

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux SCSI]     [Kernel Newbies]     [Linux SCSI Target Infrastructure]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Device Mapper]

  Powered by Linux