diff options
author | James Smart <James.Smart@Emulex.Com> | 2008-12-04 22:39:40 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-12-29 12:24:27 -0500 |
commit | 9f1e1b50ab43a281dbc75c25f11e1926a9ea367a (patch) | |
tree | a88f66e6205bd1dbff333b1a9da9fb62cd6f0cd5 /drivers/scsi/lpfc/lpfc_init.c | |
parent | 5b75da2fa2c9570c3c3dbb2f63cae5b4183e0ca3 (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.c | 7 |
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); | ||
2892 | out_free_sysfs_attr: | 2897 | out_free_sysfs_attr: |
2893 | lpfc_free_sysfs_attr(vport); | 2898 | lpfc_free_sysfs_attr(vport); |
2894 | out_destroy_port: | 2899 | out_destroy_port: |