rpms/kernel/F-7 linux-2.6-scsi-bounce-isa.patch,1.1,1.2
Dave Jones (davej)
fedora-extras-commits at redhat.com
Fri May 18 20:08:44 UTC 2007
Author: davej
Update of /cvs/pkgs/rpms/kernel/F-7
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv7966
Modified Files:
linux-2.6-scsi-bounce-isa.patch
Log Message:
better fix
linux-2.6-scsi-bounce-isa.patch:
Index: linux-2.6-scsi-bounce-isa.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-7/linux-2.6-scsi-bounce-isa.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-scsi-bounce-isa.patch 18 May 2007 19:40:07 -0000 1.1
+++ linux-2.6-scsi-bounce-isa.patch 18 May 2007 20:08:39 -0000 1.2
@@ -1,133 +1,14 @@
-From davej Tue May 8 12:13:20 2007
-Return-path: <linux-kernel-owner+davej=40kernelslacker.org-S934907AbXEHQNA at vger.kernel.org>
-X-Spam-Checker-Version: SpamAssassin 3.1.8 (2007-02-13) on
- gelk.kernelslacker.org
-X-Spam-Level:
-X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00 autolearn=ham
- version=3.1.8
-Envelope-to: davej at kernelslacker.org
-Delivery-date: Tue, 08 May 2007 17:13:14 +0100
-Received: from testure.choralone.org [194.9.77.134]
- by gelk.kernelslacker.org with IMAP (fetchmail-6.3.6)
- for <davej at localhost> (single-drop); Tue, 08 May 2007 12:13:20 -0400 (EDT)
-Received: from vger.kernel.org ([209.132.176.167])
- by testure.choralone.org with esmtp (Exim 4.63)
- (envelope-from <linux-kernel-owner+davej=40kernelslacker.org-S934907AbXEHQNA at vger.kernel.org>)
- id 1HlSJO-0003f4-9V
- for davej at kernelslacker.org; Tue, 08 May 2007 17:13:14 +0100
-Received: (majordomo at vger.kernel.org) by vger.kernel.org via listexpand
- id S934907AbXEHQNA (ORCPT <rfc822;davej at kernelslacker.org>);
- Tue, 8 May 2007 12:13:00 -0400
-Received: (majordomo at vger.kernel.org) by vger.kernel.org id S934686AbXEHQM7
- (ORCPT <rfc822;linux-kernel-outgoing>);
- Tue, 8 May 2007 12:12:59 -0400
-Received: from outpipe-village-512-1.bc.nu ([81.2.110.250]:59356 "EHLO
- the-village.bc.nu" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org
- with ESMTP id S934347AbXEHQM6 (ORCPT
- <rfc822;linux-kernel at vger.kernel.org>);
- Tue, 8 May 2007 12:12:58 -0400
-Received: from the-village.bc.nu (localhost.localdomain [127.0.0.1])
- by the-village.bc.nu (8.13.8/8.13.8) with ESMTP id l48GHApu023443;
- Tue, 8 May 2007 17:17:11 +0100
-Date: Tue, 8 May 2007 17:17:10 +0100
-From: Alan Cox <alan at lxorguk.ukuu.org.uk>
-To: linux-scsi at vger.kernel.org, akpm at osdl.org,
- linux-kernel at vger.kernel.org
-Subject: [PATCH]: Fix old SCSI adapter crashes with CD-ROM (take 2)
-Message-ID: <20070508171710.1ac730cd at the-village.bc.nu>
-X-Mailer: Claws Mail 2.9.1 (GTK+ 2.10.8; i386-redhat-linux-gnu)
-Mime-Version: 1.0
-Content-Type: text/plain; charset=US-ASCII
-Content-Transfer-Encoding: 7bit
-Sender: linux-kernel-owner at vger.kernel.org
-Precedence: bulk
-X-Mailing-List: linux-kernel at vger.kernel.org
-Status: RO
-Content-Length: 2787
-Lines: 84
-The CD-ROM layer doesn't bounce requests for old ISA controllers (and
-nor should it). However they get injected into the SCSI layer via
-sr_ioctl which also doesn't bounce them and SCSI then passes the buffer
-along to a device with unchecked_isa_dma set which either panics or
-truncates the buffer to 24bits.
+http://marc.info/?l=linux-scsi&m=115981479822790&w=2
-According to Jens the right long term fix is for the CD layer to route
-the requests differently but in the mean time this has been tested by a
-victim and verified to sort the problem out. For the other 99.9% of users
-it's a no-op and doesn't bounce data.
-
-Signed-off-by: Alan Cox <alan at redhat.com>
-
-diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.21-rc6-mm1/drivers/scsi/sr_ioctl.c linux-2.6.21-rc6-mm1/drivers/scsi/sr_ioctl.c
---- linux.vanilla-2.6.21-rc6-mm1/drivers/scsi/sr_ioctl.c 2007-04-12 14:14:45.000000000 +0100
-+++ linux-2.6.21-rc6-mm1/drivers/scsi/sr_ioctl.c 2007-05-08 16:55:01.446661608 +0100
-@@ -187,9 +187,10 @@
- struct scsi_sense_hdr sshdr;
- int result, err = 0, retries = 0;
- struct request_sense *sense = cgc->sense;
--
-+ void *zebedee = cgc->buffer;
-+
- SDev = cd->device;
--
-+
- if (!sense) {
- sense = kmalloc(SCSI_SENSE_BUFFERSIZE, GFP_KERNEL);
- if (!sense) {
-@@ -197,7 +198,22 @@
- goto out;
- }
- }
--
-+
-+ if (cgc->buflen && cd->device->host->unchecked_isa_dma) {
-+ switch(cgc->data_direction) {
-+ case DMA_NONE:
-+ break;
-+ case DMA_FROM_DEVICE:
-+ case DMA_TO_DEVICE:
-+ zebedee = kmalloc(cgc->buflen, GFP_KERNEL|GFP_DMA);
-+ if (zebedee ==NULL) {
-+ err = -ENOMEM;
-+ goto out;
-+ }
-+ }
-+ if (cgc->data_direction == DMA_TO_DEVICE)
-+ memcpy(zebedee, cgc->buffer, cgc->buflen);
-+ }
- retry:
- if (!scsi_block_when_processing_errors(SDev)) {
- err = -ENODEV;
-@@ -206,10 +222,15 @@
-
- memset(sense, 0, sizeof(*sense));
- result = scsi_execute(SDev, cgc->cmd, cgc->data_direction,
-- cgc->buffer, cgc->buflen, (char *)sense,
-+ zebedee, cgc->buflen, (char *)sense,
- cgc->timeout, IOCTL_RETRIES, 0);
+--- linux-2.6.21.noarch/block/ll_rw_blk.c~ 2007-05-18 16:05:04.000000000 -0400
++++ linux-2.6.21.noarch/block/ll_rw_blk.c 2007-05-18 16:07:32.000000000 -0400
+@@ -2556,6 +2556,8 @@ int blk_rq_map_kern(request_queue_t *q,
+ bio->bi_rw |= (1 << BIO_RW);
- scsi_normalize_sense((char *)sense, sizeof(*sense), &sshdr);
-+
-+ if (zebedee != cgc->buffer) {
-+ if (cgc->data_direction == DMA_FROM_DEVICE)
-+ memcpy(cgc->buffer, zebedee, cgc->buflen);
-+ }
-
- /* Minimal error checking. Ignore cases we know about, and report the rest. */
- if (driver_byte(result) != 0) {
-@@ -266,6 +287,8 @@
-
- /* Wake up a process waiting for device */
- out:
-+ if (zebedee != cgc->buffer)
-+ kfree(zebedee); /* Time for bed */
- if (!cgc->sense)
- kfree(sense);
- cgc->stat = err;
--
-To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
-the body of a message to majordomo at vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-Please read the FAQ at http://www.tux.org/lkml/
-
+ blk_rq_bio_prep(q, rq, bio);
++ blk_queue_bounce(q, &rq->bio);
++
+ rq->buffer = rq->data = NULL;
+ return 0;
+ }
More information about the fedora-extras-commits
mailing list