Boaz Harrosh commented on the "[PATCH v5] sg: relax 16
byte cdb restriction" thread that SCSI variable length
commands (which are all SCSI commands greater than 16
bytes long) must themselves be a multiple of 4 bytes
long.
ChangeLog
- limit the maximum cdb size permitted by the sg
v3 interface to 252 bytes. Commands that large
are called "variable length" and their length
needs to be a multiple of 4.
Original patch:
Reviewed-by: Boaz Harrosh <[email protected]>
Signed-off-by: Douglas Gilbert <[email protected]>
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index b6d183a..2e01a9d 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -74,9 +74,10 @@ static void sg_proc_cleanup(void);
#define SG_MAX_DEVS 32768
/* SG_MAX_CDB_SIZE should be 260 (spc4r37 section 3.1.30) however the type
- * of sg_io_hdr::cmd_len can only represent 255
+ * of sg_io_hdr::cmd_len can only represent 255. All SCSI commands greater
+ * than 16 bytes are "variable length" whose length is a multiple of 4
*/
-#define SG_MAX_CDB_SIZE 255
+#define SG_MAX_CDB_SIZE 252
/*
* Suppose you want to calculate the formula muldiv(x,m,d)=int(x * m / d)