[SCSI] Prevent scsi_execute_async from guessing cdb length
When the scsi_execute_async interface was added it ended up reducing the flexibility of userspace to send arbitrary scsi commands through sg using SG_IO. The SG_IO interface allows userspace to specify the CDB length. This is now ignored in scsi_execute_async and it is guessed using the COMMAND_SIZE macro, which is not always correct, particularly for vendor specific commands. This patch adds a cmd_len parameter to the scsi_execute_async interface to allow the caller to specify the length of the CDB. Signed-off-by: Brian King <brking@us.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
committed by
James Bottomley
parent
15084a4a63
commit
bb1d1073a1
@@ -508,7 +508,7 @@ st_do_scsi(struct st_request * SRpnt, struct scsi_tape * STp, unsigned char *cmd
|
||||
STp->buffer->cmdstat.have_sense = 0;
|
||||
STp->buffer->syscall_result = 0;
|
||||
|
||||
if (scsi_execute_async(STp->device, cmd, direction,
|
||||
if (scsi_execute_async(STp->device, cmd, COMMAND_SIZE(cmd[0]), direction,
|
||||
&((STp->buffer)->sg[0]), bytes, (STp->buffer)->sg_segs,
|
||||
timeout, retries, SRpnt, st_sleep_done, GFP_KERNEL)) {
|
||||
/* could not allocate the buffer or request was too large */
|
||||
|
Reference in New Issue
Block a user