[8006] in linux-scsi channel archive

home help back first fref pref prev next nref lref last post

problems with cd changer

daemon@ATHENA.MIT.EDU (Philip Blundell)
Sun Feb 6 07:37:16 2000

To: linux-scsi@vger.rutgers.edu
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Date:   Sun, 06 Feb 2000 12:34:39 +0000
From: Philip Blundell <Philip.Blundell@pobox.com>
Message-Id: <E12HQtj-0000f2-00@kings-cross.london.uk.eu.org>

Using 2.3.42 I had a couple of problems with a multi-LUN CD-ROM changer.

First, I was getting a NULL dereference inside scsi_allocate_device.  This 
patch seems to fix it:

--- clean/linux/drivers/scsi/scsi.c	Sun Feb  6 12:28:31 2000
+++ linux/drivers/scsi/scsi.c	Sun Feb  6 12:31:01 2000
@@ -330,8 +330,7 @@
 					 * If asked to wait, we need to wait, otherwise
 					 * return NULL.
 					 */
-					SCpnt = NULL;
-					break;
+					goto wait;
 				}
 			}
 			/*
@@ -342,6 +341,7 @@
 					break;
 			}
 		}
+        wait:
 		/*
 		 * If we couldn't find a free command block, and we have been
 		 * asked to wait, then do so.

But, with that patch applied, "insmod sr_mod" was hanging forever in this 
function.  It turns out that the SCSI bus scan was leaving `device_active' set 
to one.  This patch seems to avoid the problem:

--- clean/linux/drivers/scsi/scsi_scan.c	Sun Feb  6 12:28:31 2000
+++ linux/drivers/scsi/scsi_scan.c	Sun Feb  6 11:55:48 2000
@@ -262,7 +262,7 @@
 	Scsi_Cmnd *SCpnt;
 	unsigned char *scsi_result;
 	unsigned char scsi_result0[256];
-	Scsi_Device *SDpnt;
+	Scsi_Device *SDpnt, *oldSDpnt;
 	Scsi_Device *SDtail;
 	int sparse_lun;
 
@@ -331,6 +331,7 @@
 	 */
 	atomic_inc(&shpnt->host_active);
 	atomic_inc(&SDpnt->device_active);
+	oldSDpnt = SDpnt;
 
 	if (hardcoded == 1) {
 		Scsi_Device *oldSDpnt = SDpnt;
@@ -412,7 +413,7 @@
 	 * so we know when everything is quiet.
 	 */
 	atomic_dec(&shpnt->host_active);
-	atomic_dec(&SDpnt->device_active);
+	atomic_dec(&oldSDpnt->device_active);
 
       leave:

Could one of the experts please take a look?

Thanks
 
p.



-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.rutgers.edu

home help back first fref pref prev next nref lref last post