diff mbox series

target: do not overwrite CDB byte 1

Message ID 12498eab-76fd-eaad-1316-c2827badb76a@ts.fujitsu.com (mailing list archive)
State Accepted
Headers show
Series target: do not overwrite CDB byte 1 | expand

Commit Message

Bodo Stroesser Oct. 14, 2019, 6:29 p.m. UTC
passthrough_parse_cdb() - used by TCMU and PSCSI - attepts to
reset the LUN field of SCSI-2 CDBs (bits 5,6,7 of byte 1).
The current code is wrong, as for newer commands not having the
LUN field it overwrites relevant command bits (e.g. for SECURITY
PROTOCOL IN / OUT)
We think this code was unnecessary from the beginning or at least
it is no longer useful. So we remove it entirely.

Signed-off-by: Bodo Stroesser <bstroesser@ts.fujitsu.com>
---
  drivers/target/target_core_device.c |   21 ---------------------
  1 file changed, 21 deletions(-)

Comments

Bart Van Assche Oct. 14, 2019, 9:51 p.m. UTC | #1
On 10/14/19 11:29 AM, Bodo Stroesser wrote:
> passthrough_parse_cdb() - used by TCMU and PSCSI - attepts to
> reset the LUN field of SCSI-2 CDBs (bits 5,6,7 of byte 1).
> The current code is wrong, as for newer commands not having the
> LUN field it overwrites relevant command bits (e.g. for SECURITY
> PROTOCOL IN / OUT)
> We think this code was unnecessary from the beginning or at least
> it is no longer useful. So we remove it entirely.

Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Hannes Reinecke Oct. 15, 2019, 5:59 a.m. UTC | #2
On 10/14/19 8:29 PM, Bodo Stroesser wrote:
> passthrough_parse_cdb() - used by TCMU and PSCSI - attepts to
> reset the LUN field of SCSI-2 CDBs (bits 5,6,7 of byte 1).
> The current code is wrong, as for newer commands not having the
> LUN field it overwrites relevant command bits (e.g. for SECURITY
> PROTOCOL IN / OUT)
> We think this code was unnecessary from the beginning or at least
> it is no longer useful. So we remove it entirely.
> 
> Signed-off-by: Bodo Stroesser <bstroesser@ts.fujitsu.com>
> ---
>  drivers/target/target_core_device.c |   21 ---------------------
>  1 file changed, 21 deletions(-)
> 
Reviewed-by: Hannes Reinecke <hare@suse.com>

Cheers,

Hannes
Martin K. Petersen Oct. 18, 2019, 1:41 a.m. UTC | #3
Bodo,

> passthrough_parse_cdb() - used by TCMU and PSCSI - attepts to reset
> the LUN field of SCSI-2 CDBs (bits 5,6,7 of byte 1).  The current code
> is wrong, as for newer commands not having the LUN field it overwrites
> relevant command bits (e.g. for SECURITY PROTOCOL IN / OUT) We think
> this code was unnecessary from the beginning or at least it is no
> longer useful. So we remove it entirely.

Applied to 5.4/scsi-fixes, thanks!
diff mbox series

Patch

--- a/drivers/target/target_core_device.c
+++ b/drivers/target/target_core_device.c
@@ -1075,27 +1075,6 @@  passthrough_parse_cdb(struct se_cmd *cmd
  	unsigned int size;
   	/*
-	 * Clear a lun set in the cdb if the initiator talking to use spoke
-	 * and old standards version, as we can't assume the underlying device
-	 * won't choke up on it.
-	 */
-	switch (cdb[0]) {
-	case READ_10: /* SBC - RDProtect */
-	case READ_12: /* SBC - RDProtect */
-	case READ_16: /* SBC - RDProtect */
-	case SEND_DIAGNOSTIC: /* SPC - SELF-TEST Code */
-	case VERIFY: /* SBC - VRProtect */
-	case VERIFY_16: /* SBC - VRProtect */
-	case WRITE_VERIFY: /* SBC - VRProtect */
-	case WRITE_VERIFY_12: /* SBC - VRProtect */
-	case MAINTENANCE_IN: /* SPC - Parameter Data Format for SA RTPG */
-		break;
-	default:
-		cdb[1] &= 0x1f; /* clear logical unit number */
-		break;
-	}
-
-	/*
  	 * For REPORT LUNS we always need to emulate the response, for everything
  	 * else, pass it up.
  	 */