[PATCH][SCSI] fix regression in SCSI_IOCTL_SEND_COMMAND
blk_rq_set_block_pc() memsets rq-cmd to 0, so it should come immediately after blk_get_request() to avoid overwriting the user-supplied CDB. Also check for failure to allocate rq. Fixes: f27b087b81b7 (block: add blk_rq_set_block_pc()) Cc: sta...@vger.kernel.org # 3.16.x Signed-off-by: Tony Battersby to...@cybernetics.com --- For inclusion in 3.17 and 3.16.x. Note: I don't have any programs that use this ioctl, so this patch is compile-tested only. --- linux-3.17.0-rc1-a/block/scsi_ioctl.c 2014-08-16 12:40:26.0 -0400 +++ linux-3.17.0-rc1-b/block/scsi_ioctl.c 2014-08-22 14:15:34.0 -0400 @@ -448,6 +448,11 @@ int sg_scsi_ioctl(struct request_queue * } rq = blk_get_request(q, in_len ? WRITE : READ, __GFP_WAIT); + if (!rq) { + err = -ENOMEM; + goto error; + } + blk_rq_set_block_pc(rq); cmdlen = COMMAND_SIZE(opcode); @@ -501,7 +506,6 @@ int sg_scsi_ioctl(struct request_queue * memset(sense, 0, sizeof(sense)); rq-sense = sense; rq-sense_len = 0; - blk_rq_set_block_pc(rq); blk_execute_rq(q, disk, rq, 0); @@ -521,7 +525,8 @@ out: error: kfree(buffer); - blk_put_request(rq); + if (rq) + blk_put_request(rq); return err; } EXPORT_SYMBOL_GPL(sg_scsi_ioctl); -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH][SCSI] fix regression in SCSI_IOCTL_SEND_COMMAND
On 14-08-22 03:53 PM, Tony Battersby wrote: blk_rq_set_block_pc() memsets rq-cmd to 0, so it should come immediately after blk_get_request() to avoid overwriting the user-supplied CDB. Also check for failure to allocate rq. Fixes: f27b087b81b7 (block: add blk_rq_set_block_pc()) Cc: sta...@vger.kernel.org # 3.16.x Signed-off-by: Tony Battersby to...@cybernetics.com Tested-by: Douglas Gilbert dgilb...@interlog.com For inclusion in 3.17 and 3.16.x. Note: I don't have any programs that use this ioctl, so this patch is compile-tested only. To test this ioctl one option is to get the sg3_utils package and build scsi_ioctl.c in the examples directory with 'make scsi_ioctl'. In lk 3.17-rc1, scsi_ioctl indicates that SCSI_IOCTL_SEND_COMMAND is not working. In my test applying this patch fixes the regression. --- linux-3.17.0-rc1-a/block/scsi_ioctl.c 2014-08-16 12:40:26.0 -0400 +++ linux-3.17.0-rc1-b/block/scsi_ioctl.c 2014-08-22 14:15:34.0 -0400 @@ -448,6 +448,11 @@ int sg_scsi_ioctl(struct request_queue * } rq = blk_get_request(q, in_len ? WRITE : READ, __GFP_WAIT); + if (!rq) { + err = -ENOMEM; + goto error; + } + blk_rq_set_block_pc(rq); cmdlen = COMMAND_SIZE(opcode); @@ -501,7 +506,6 @@ int sg_scsi_ioctl(struct request_queue * memset(sense, 0, sizeof(sense)); rq-sense = sense; rq-sense_len = 0; - blk_rq_set_block_pc(rq); blk_execute_rq(q, disk, rq, 0); @@ -521,7 +525,8 @@ out: error: kfree(buffer); - blk_put_request(rq); + if (rq) + blk_put_request(rq); return err; } EXPORT_SYMBOL_GPL(sg_scsi_ioctl); -- -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH][SCSI] fix regression in SCSI_IOCTL_SEND_COMMAND
On Fri, Aug 22, 2014 at 08:28:27PM -0400, Douglas Gilbert wrote: To test this ioctl one option is to get the sg3_utils package and build scsi_ioctl.c in the examples directory with 'make scsi_ioctl'. In lk 3.17-rc1, scsi_ioctl indicates that SCSI_IOCTL_SEND_COMMAND is not working. In my test applying this patch fixes the regression. Is there any amount of chocolate or beer that could trick you into adding an automated regression test suite to sg3_utils that could be used to automatically check for regressions like this? -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html