diff options
author | James Smart <jsmart2021@gmail.com> | 2019-05-21 17:49:03 -0700 |
---|---|---|
committer | Martin K. Petersen <martin.petersen@oracle.com> | 2019-06-18 19:46:21 -0400 |
commit | 04d210c98e11d863ebe38a7e482e40fb90d9ad82 (patch) | |
tree | 890e9d62402955a7247e94cdb8b71c55fb312a47 | |
parent | c15e07047e7ad006324d8a8b9d58a86e8f0131fe (diff) | |
download | lwn-04d210c98e11d863ebe38a7e482e40fb90d9ad82.tar.gz lwn-04d210c98e11d863ebe38a7e482e40fb90d9ad82.zip |
scsi: lpfc: Fix memory leak in abnormal exit path from lpfc_eq_create
eq create is leaking mailbox memory if it encounters an error.
rework error path to free the memory.
Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r-- | drivers/scsi/lpfc/lpfc_sli.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c index 946f3024d4db..4432060f7315 100644 --- a/drivers/scsi/lpfc/lpfc_sli.c +++ b/drivers/scsi/lpfc/lpfc_sli.c @@ -14641,8 +14641,10 @@ lpfc_eq_create(struct lpfc_hba *phba, struct lpfc_queue *eq, uint32_t imax) lpfc_printf_log(phba, KERN_ERR, LOG_SLI, "0360 Unsupported EQ count. (%d)\n", eq->entry_count); - if (eq->entry_count < 256) - return -EINVAL; + if (eq->entry_count < 256) { + status = -EINVAL; + goto out; + } /* fall through - otherwise default to smallest count */ case 256: bf_set(lpfc_eq_context_count, &eq_create->u.request.context, @@ -14694,7 +14696,7 @@ lpfc_eq_create(struct lpfc_hba *phba, struct lpfc_queue *eq, uint32_t imax) eq->host_index = 0; eq->notify_interval = LPFC_EQ_NOTIFY_INTRVL; eq->max_proc_limit = LPFC_EQ_MAX_PROC_LIMIT; - +out: mempool_free(mbox, phba->mbox_mem_pool); return status; } |