Explorar el Código

Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6:
  [SCSI] fix oops in scsi_run_queue()
Linus Torvalds hace 14 años
padre
commit
e5e06985be
Se han modificado 1 ficheros con 6 adiciones y 1 borrados
  1. 6 1
      drivers/scsi/scsi_lib.c

+ 6 - 1
drivers/scsi/scsi_lib.c

@@ -400,10 +400,15 @@ static inline int scsi_host_is_busy(struct Scsi_Host *shost)
 static void scsi_run_queue(struct request_queue *q)
 static void scsi_run_queue(struct request_queue *q)
 {
 {
 	struct scsi_device *sdev = q->queuedata;
 	struct scsi_device *sdev = q->queuedata;
-	struct Scsi_Host *shost = sdev->host;
+	struct Scsi_Host *shost;
 	LIST_HEAD(starved_list);
 	LIST_HEAD(starved_list);
 	unsigned long flags;
 	unsigned long flags;
 
 
+	/* if the device is dead, sdev will be NULL, so no queue to run */
+	if (!sdev)
+		return;
+
+	shost = sdev->host;
 	if (scsi_target(sdev)->single_lun)
 	if (scsi_target(sdev)->single_lun)
 		scsi_single_lun_run(sdev);
 		scsi_single_lun_run(sdev);