RE: oops with USB Storage on 2.6.14

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks!  Here's a better one.

--- ../base/linux-2.6.14-rc4/drivers/scsi/scsi_lib.c	2005-10-10
20:19:19.000000000 -0500
+++ drivers/scsi/scsi_lib.c	2005-11-07 04:46:23.000000000 -0600
@@ -592,10 +592,17 @@ static void scsi_requeue_command(struct 
 
 void scsi_next_command(struct scsi_cmnd *cmd)
 {
-	struct request_queue *q = cmd->device->request_queue;
+	struct scsi_device *sdev = cmd->device;
+	struct request_queue *q = sdev->request_queue;
+
+	/* need to hold a reference on the device before we let go of the
cmd */
+	get_device(&sdev->sdev_gendev);
 
 	scsi_put_command(cmd);
 	scsi_run_queue(q);
+
+	/* ok to remove device now */
+	put_device(&sdev->sdev_gendev);
 }
 
 void scsi_run_host_queues(struct Scsi_Host *shost)



 

> -----Original Message-----
> From: [email protected] 
> [mailto:[email protected]] On Behalf Of Rolf Eike Beer
> Sent: Tuesday, November 08, 2005 11:38 AM
> To: goggin, edward
> Cc: 'Andrew Morton'; Masanari Iida; 
> [email protected]; 
> [email protected]; [email protected]
> Subject: Re: oops with USB Storage on 2.6.14
> 
> Am Dienstag, 8. November 2005 17:24 schrieb goggin, edward:
> >I've run into a bug like this several times using 2.6.14-rc4 while
> >testing dm-multipath's reaction to uevents generated by forcing
> >fiber channel transport failures -- which leads to the scsi device
> >being detached and the queuedata pointer in the device's queue being
> >reset in scsi_device_dev_release.  The fix I've used is below and
> >it seems to work well for me.  I was going to place this patch on
> >dm-devel today or tomorrow anyway.
> >
> >drivers/scsi/scsi_lib.c:scsi_next_command()
> >Call scsi_device_get and scsi_device_put around the calls to
> >scsi_put_command
> >and scsi_run_queue so that the scsi host structure will not 
> be de-allocated
> >between scsi_put_command and scsi_run_queue.
> >
> >*** ../base/linux-2.6.14-rc4/drivers/scsi/scsi_lib.c	Mon Oct 
> 10 20:19:19
> >2005
> >--- drivers/scsi/scsi_lib.c	Thu Nov  3 13:30:03 2005
> >***************
> >*** 592,601 ****
> 
> Your patch is linewrapped. Also please use unified diff 
> format, good choice 
> for diff options is "-Naurp".
> 
> Eike
> 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux