From: Chris Wright Date: Wed, 29 Nov 2006 17:49:13 +0000 (-0800) Subject: add scsi SG_IO fix X-Git-Tag: v2.6.18.4~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=92f5eed21322925dfccb3ff9e8a317cc82ccfe68;p=thirdparty%2Fkernel%2Fstable-queue.git add scsi SG_IO fix --- diff --git a/queue-2.6.18/scsi-clear-garbage-after-cdbs-on-sg_io.patch b/queue-2.6.18/scsi-clear-garbage-after-cdbs-on-sg_io.patch new file mode 100644 index 00000000000..f9b926e849b --- /dev/null +++ b/queue-2.6.18/scsi-clear-garbage-after-cdbs-on-sg_io.patch @@ -0,0 +1,53 @@ +From stable-bounces@linux.kernel.org Thu Nov 16 01:23:55 2006 +Message-Id: <200611160919.kAG9JVas018776@shell0.pdx.osdl.net> +To: torvalds@osdl.org +From: akpm@osdl.org +Date: Thu, 16 Nov 2006 01:19:31 -0800 +Cc: akpm@osdl.org, James.Bottomley@steeleye.com, htejun@gmail.com, dougg@torque.net, jens.axboe@oracle.com, mfluhr@nero.com, jgarzik@pobox.com, stable@kernel.org +Subject: scsi: clear garbage after CDBs on SG_IO + +From: Tejun Heo + +ATAPI devices transfer fixed number of bytes for CDBs (12 or 16). Some +ATAPI devices choke when shorter CDB is used and the left bytes contain +garbage. Block SG_IO cleared left bytes but SCSI SG_IO didn't. This patch +makes SCSI SG_IO clear it and simplify CDB clearing in block SG_IO. + +Signed-off-by: Tejun Heo +Cc: Mathieu Fluhr +Cc: James Bottomley +Cc: Douglas Gilbert +Acked-by: Jens Axboe +Cc: +Acked-by: Jeff Garzik +Signed-off-by: Andrew Morton +Signed-off-by: Chris Wright +--- + + block/scsi_ioctl.c | 3 +-- + drivers/scsi/scsi_lib.c | 1 + + 2 files changed, 2 insertions(+), 2 deletions(-) + +--- linux-2.6.18.3.orig/block/scsi_ioctl.c ++++ linux-2.6.18.3/block/scsi_ioctl.c +@@ -286,9 +286,8 @@ static int sg_io(struct file *file, requ + * fill in request structure + */ + rq->cmd_len = hdr->cmd_len; ++ memset(rq->cmd, 0, BLK_MAX_CDB); /* ATAPI hates garbage after CDB */ + memcpy(rq->cmd, cmd, hdr->cmd_len); +- if (sizeof(rq->cmd) != hdr->cmd_len) +- memset(rq->cmd + hdr->cmd_len, 0, sizeof(rq->cmd) - hdr->cmd_len); + + memset(sense, 0, sizeof(sense)); + rq->sense = sense; +--- linux-2.6.18.3.orig/drivers/scsi/scsi_lib.c ++++ linux-2.6.18.3/drivers/scsi/scsi_lib.c +@@ -408,6 +408,7 @@ int scsi_execute_async(struct scsi_devic + goto free_req; + + req->cmd_len = cmd_len; ++ memset(req->cmd, 0, BLK_MAX_CDB); /* ATAPI hates garbage after CDB */ + memcpy(req->cmd, cmd, req->cmd_len); + req->sense = sioc->sense; + req->sense_len = 0; diff --git a/queue-2.6.18/series b/queue-2.6.18/series index 7105f8a0fdd..d920557bf5b 100644 --- a/queue-2.6.18/series +++ b/queue-2.6.18/series @@ -1,3 +1,4 @@ +scsi-clear-garbage-after-cdbs-on-sg_io.patch netfilter-missing-check-for-cap_net_admin-in-iptables-compat-layer.patch netfilter-ip_tables-compat-error-way-cleanup.patch netfilter-ip_tables-fix-module-refcount-leaks-in-compat-error-paths.patch