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: linux-scsi-owner@xxxxxxxxxxxxxxx > [mailto:linux-scsi-owner@xxxxxxxxxxxxxxx] On Behalf Of Rolf Eike Beer > Sent: Tuesday, November 08, 2005 11:38 AM > To: goggin, edward > Cc: 'Andrew Morton'; Masanari Iida; > linux-kernel@xxxxxxxxxxxxxxx; > linux-usb-devel@xxxxxxxxxxxxxxxxxxxxx; linux-scsi@xxxxxxxxxxxxxxx > 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 > - : send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html