[SCSI] lpfc 8.1.4 : Two misc fixes
authorJames Smart <James.Smart@Emulex.Com>
Tue, 7 Mar 2006 20:04:19 +0000 (15:04 -0500)
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>
Sun, 12 Mar 2006 14:57:13 +0000 (08:57 -0600)
Two misc fixes:
 - Fix deadlock caused by return with host_lock held in lpfc_findnode_did
 - Initialize all fields of the allocated mail box structure to zero.
   Was causing some sysfs mailbox commands to fail immediately after load.

Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/lpfc/lpfc_attr.c
drivers/scsi/lpfc/lpfc_hbadisc.c

index 2558156..b62a72d 100644 (file)
@@ -856,7 +856,7 @@ sysfs_mbox_write(struct kobject *kobj, char *buf, loff_t off, size_t count)
                mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL);
                if (!mbox)
                        return -ENOMEM;
-
+               memset(mbox, 0, sizeof (LPFC_MBOXQ_t));
        }
 
        spin_lock_irq(host->host_lock);
index f54089f..6721e67 100644 (file)
@@ -1760,6 +1760,7 @@ lpfc_findnode_did(struct lpfc_hba * phba, uint32_t order, uint32_t did)
                                                phba->brd_no,
                                                ndlp, ndlp->nlp_DID,
                                                ndlp->nlp_flag, data1);
+                               spin_unlock_irq(phba->host->host_lock);
                                return ndlp;
                        }
                }
@@ -1805,6 +1806,7 @@ lpfc_findnode_did(struct lpfc_hba * phba, uint32_t order, uint32_t did)
                                                phba->brd_no,
                                                ndlp, ndlp->nlp_DID,
                                                ndlp->nlp_flag, data1);
+                               spin_unlock_irq(phba->host->host_lock);
                                return ndlp;
                        }
                }