aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_init.c
diff options
context:
space:
mode:
authorJames Smart <James.Smart@Emulex.Com>2008-12-04 22:39:40 -0500
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-12-29 12:24:27 -0500
commit9f1e1b50ab43a281dbc75c25f11e1926a9ea367a (patch)
treea88f66e6205bd1dbff333b1a9da9fb62cd6f0cd5 /drivers/scsi/lpfc/lpfc_init.c
parent5b75da2fa2c9570c3c3dbb2f63cae5b4183e0ca3 (diff)
[SCSI] lpfc 8.3.0 : Fix some memory handling issues
- Fix mailbox buffer leak on dump mailbox completion - Fix mbuf leak in lpfc_pci_probe_one() SLI-2 mode error path - Don't allocate HBQs in interrupt context - Use correct size for FCP response buffer so that all available sense data is copied - Fix jiffies calculation to prevent crash when collecting statistical data Signed-off-by: James Smart <James.Smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_init.c')
-rw-r--r--drivers/scsi/lpfc/lpfc_init.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index e07f12a0871b..7a216d478a94 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -255,8 +255,10 @@ lpfc_dump_wakeup_param_cmpl(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmboxq)
255 /* character array used for decoding dist type. */ 255 /* character array used for decoding dist type. */
256 char dist_char[] = "nabx"; 256 char dist_char[] = "nabx";
257 257
258 if (pmboxq->mb.mbxStatus != MBX_SUCCESS) 258 if (pmboxq->mb.mbxStatus != MBX_SUCCESS) {
259 mempool_free(pmboxq, phba->mbox_mem_pool);
259 return; 260 return;
261 }
260 262
261 prg = (struct prog_id *) &prog_id_word; 263 prg = (struct prog_id *) &prog_id_word;
262 264
@@ -274,6 +276,7 @@ lpfc_dump_wakeup_param_cmpl(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmboxq)
274 sprintf(phba->OptionROMVersion, "%d.%d%d%c%d", 276 sprintf(phba->OptionROMVersion, "%d.%d%d%c%d",
275 prg->ver, prg->rev, prg->lev, 277 prg->ver, prg->rev, prg->lev,
276 dist, prg->num); 278 dist, prg->num);
279 mempool_free(pmboxq, phba->mbox_mem_pool);
277 return; 280 return;
278} 281}
279 282
@@ -2889,6 +2892,8 @@ out_remove_device:
2889 lpfc_stop_phba_timers(phba); 2892 lpfc_stop_phba_timers(phba);
2890 phba->pport->work_port_events = 0; 2893 phba->pport->work_port_events = 0;
2891 lpfc_disable_intr(phba); 2894 lpfc_disable_intr(phba);
2895 lpfc_sli_hba_down(phba);
2896 lpfc_sli_brdrestart(phba);
2892out_free_sysfs_attr: 2897out_free_sysfs_attr:
2893 lpfc_free_sysfs_attr(vport); 2898 lpfc_free_sysfs_attr(vport);
2894out_destroy_port: 2899out_destroy_port: