--- a/drivers/scsi/scsi_error.c 2005-12-07 19:14:44.000000000 -0800 +++ b/drivers/scsi/scsi_error.c 2005-12-07 19:13:24.734716721 -0800 @@ -422,10 +422,15 @@ **/ static void scsi_eh_done(struct scsi_cmnd *scmd) { + struct completion *eh_action; + SCSI_LOG_ERROR_RECOVERY(3, printk("%s scmd: %p result: %x\n", __FUNCTION__, scmd, scmd->result)); - complete(scmd->device->host->eh_action); + + eh_action = scmd->device->host->eh_action; + if (eh_action) + complete(eh_action); } /**