mirror of
https://github.com/torvalds/linux.git
synced 2024-12-02 09:01:34 +00:00
[SCSI] lpfc 8.3.29: Locking fix and Memory leak Fixes
Locking fix and Memory leak Fixes - Fix Locking code raises IRQ twice (NA) - Fix mailbox and vpi memory leaks (126818) Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com> Signed-off-by: James Smart <james.smart@emulex.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
parent
eff4a01b6e
commit
728599090a
@ -2977,9 +2977,9 @@ lpfc_mbx_process_link_up(struct lpfc_hba *phba, struct lpfc_mbx_read_top *la)
|
||||
"topology\n");
|
||||
/* Get Loop Map information */
|
||||
if (bf_get(lpfc_mbx_read_top_il, la)) {
|
||||
spin_lock_irq(shost->host_lock);
|
||||
spin_lock(shost->host_lock);
|
||||
vport->fc_flag |= FC_LBIT;
|
||||
spin_unlock_irq(shost->host_lock);
|
||||
spin_unlock(shost->host_lock);
|
||||
}
|
||||
|
||||
vport->fc_myDID = bf_get(lpfc_mbx_read_top_alpa_granted, la);
|
||||
@ -3029,9 +3029,9 @@ lpfc_mbx_process_link_up(struct lpfc_hba *phba, struct lpfc_mbx_read_top *la)
|
||||
phba->sli3_options |= LPFC_SLI3_NPIV_ENABLED;
|
||||
}
|
||||
vport->fc_myDID = phba->fc_pref_DID;
|
||||
spin_lock_irq(shost->host_lock);
|
||||
spin_lock(shost->host_lock);
|
||||
vport->fc_flag |= FC_LBIT;
|
||||
spin_unlock_irq(shost->host_lock);
|
||||
spin_unlock(shost->host_lock);
|
||||
}
|
||||
spin_unlock_irq(&phba->hbalock);
|
||||
|
||||
|
@ -8178,6 +8178,9 @@ lpfc_unset_hba(struct lpfc_hba *phba)
|
||||
vport->load_flag |= FC_UNLOADING;
|
||||
spin_unlock_irq(shost->host_lock);
|
||||
|
||||
kfree(phba->vpi_bmask);
|
||||
kfree(phba->vpi_ids);
|
||||
|
||||
lpfc_stop_hba_timers(phba);
|
||||
|
||||
phba->pport->work_port_events = 0;
|
||||
@ -8710,6 +8713,9 @@ lpfc_pci_remove_one_s3(struct pci_dev *pdev)
|
||||
/* Final cleanup of txcmplq and reset the HBA */
|
||||
lpfc_sli_brdrestart(phba);
|
||||
|
||||
kfree(phba->vpi_bmask);
|
||||
kfree(phba->vpi_ids);
|
||||
|
||||
lpfc_stop_hba_timers(phba);
|
||||
spin_lock_irq(&phba->hbalock);
|
||||
list_del_init(&vport->listentry);
|
||||
|
@ -481,6 +481,7 @@ lpfc_mbx_cmpl_resume_rpi(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq)
|
||||
ndlp, NULL);
|
||||
}
|
||||
kfree(elsiocb);
|
||||
mempool_free(mboxq, phba->mbox_mem_pool);
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -14840,7 +14840,8 @@ lpfc_sli4_resume_rpi(struct lpfc_nodelist *ndlp,
|
||||
mboxq->mbox_cmpl = cmpl;
|
||||
mboxq->context1 = arg;
|
||||
mboxq->context2 = ndlp;
|
||||
}
|
||||
} else
|
||||
mboxq->mbox_cmpl = lpfc_sli_def_mbox_cmpl;
|
||||
mboxq->vport = ndlp->vport;
|
||||
rc = lpfc_sli_issue_mbox(phba, mboxq, MBX_NOWAIT);
|
||||
if (rc == MBX_NOT_FINISHED) {
|
||||
|
Loading…
Reference in New Issue
Block a user