diff options
Diffstat (limited to 'drivers/target/loopback/tcm_loop.c')
| -rw-r--r-- | drivers/target/loopback/tcm_loop.c | 11 | 
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/target/loopback/tcm_loop.c b/drivers/target/loopback/tcm_loop.c index 38dfac2b0a1..5491c632a15 100644 --- a/drivers/target/loopback/tcm_loop.c +++ b/drivers/target/loopback/tcm_loop.c @@ -211,12 +211,11 @@ static void tcm_loop_submission_work(struct work_struct *work)  	/*  	 * Because some userspace code via scsi-generic do not memset their  	 * associated read buffers, go ahead and do that here for type -	 * SCF_SCSI_CONTROL_SG_IO_CDB.  Also note that this is currently -	 * guaranteed to be a single SGL for SCF_SCSI_CONTROL_SG_IO_CDB -	 * by target core in target_setup_cmd_from_cdb() -> -	 * transport_generic_cmd_sequencer(). +	 * non-data CDBs.  Also note that this is currently guaranteed to be a +	 * single SGL for this case by target core in +	 * target_setup_cmd_from_cdb() -> transport_generic_cmd_sequencer().  	 */ -	if (se_cmd->se_cmd_flags & SCF_SCSI_CONTROL_SG_IO_CDB && +	if (!(se_cmd->se_cmd_flags & SCF_SCSI_DATA_CDB) &&  	    se_cmd->data_direction == DMA_FROM_DEVICE) {  		struct scatterlist *sg = scsi_sglist(sc);  		unsigned char *buf = kmap(sg_page(sg)) + sg->offset; @@ -779,7 +778,7 @@ static int tcm_loop_write_pending(struct se_cmd *se_cmd)  	 * We now tell TCM to add this WRITE CDB directly into the TCM storage  	 * object execution queue.  	 */ -	transport_generic_process_write(se_cmd); +	target_execute_cmd(se_cmd);  	return 0;  }  |