linux/drivers/scsi/lpfc
Xiyu Yang 7217e6e694 scsi: lpfc: Fix lpfc_nodelist leak when processing unsolicited event
In order to create or activate a new node, lpfc_els_unsol_buffer() invokes
lpfc_nlp_init() or lpfc_enable_node() or lpfc_nlp_get(), all of them will
return a reference of the specified lpfc_nodelist object to "ndlp" with
increased refcnt.

When lpfc_els_unsol_buffer() returns, local variable "ndlp" becomes
invalid, so the refcount should be decreased to keep refcount balanced.

The reference counting issue happens in one exception handling path of
lpfc_els_unsol_buffer(). When "ndlp" in DEV_LOSS, the function forgets to
decrease the refcnt increased by lpfc_nlp_init() or lpfc_enable_node() or
lpfc_nlp_get(), causing a refcnt leak.

Fix this issue by calling lpfc_nlp_put() when "ndlp" in DEV_LOSS.

Link: https://lore.kernel.org/r/1590416184-52592-1-git-send-email-xiyuyang19@fudan.edu.cn
Reviewed-by: Daniel Wagner <dwagner@suse.de>
Reviewed-by: James Smart <james.smart@broadcom.com>
Signed-off-by: Xiyu Yang <xiyuyang19@fudan.edu.cn>
Signed-off-by: Xin Tan <tanxin.ctf@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2020-05-26 15:55:14 -04:00
..
Makefile scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc.h scsi: lpfc: Change default queue allocation for reduced memory consumption 2020-05-07 22:47:24 -04:00
lpfc_attr.c scsi: lpfc: Remove redundant initialization to variable rc 2020-05-11 22:30:14 -04:00
lpfc_attr.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_bsg.c scsi: lpfc: Fix memory leak on lpfc_bsg_write_ebuf_set func 2019-12-09 18:07:34 -05:00
lpfc_bsg.h scsi: lpfc: Update Copyright in driver version 2019-03-19 13:15:10 -04:00
lpfc_compat.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_crtn.h scsi: lpfc: Make debugfs ktime stats generic for NVME and SCSI 2020-03-29 18:10:58 -04:00
lpfc_ct.c scsi: lpfc: Fix negation of else clause in lpfc_prep_node_fc4type 2020-05-07 22:47:22 -04:00
lpfc_debugfs.c scsi: lpfc: Fix noderef and address space warnings 2020-05-07 22:47:26 -04:00
lpfc_debugfs.h scsi: lpfc: Make debugfs ktime stats generic for NVME and SCSI 2020-03-29 18:10:58 -04:00
lpfc_disc.h scsi: lpfc: Add NVMe sequence level error recovery support 2019-08-19 22:41:12 -04:00
lpfc_els.c scsi: lpfc: Fix lpfc_nodelist leak when processing unsolicited event 2020-05-26 15:55:14 -04:00
lpfc_hbadisc.c scsi: lpfc: Remove unnecessary lockdep_assert_held calls 2020-05-07 22:47:24 -04:00
lpfc_hw.h scsi: lpfc: Remove prototype FIPS/DSS options from SLI-3 2020-03-29 18:10:58 -04:00
lpfc_hw4.h scsi: lpfc: Fix MDS Diagnostic Enablement definition 2020-05-07 22:47:26 -04:00
lpfc_ids.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_init.c scsi: lpfc: Change default queue allocation for reduced memory consumption 2020-05-07 22:47:24 -04:00
lpfc_logmsg.h scsi: lpfc: Add log macros to allow print by serverity or verbosity setting 2019-10-24 21:02:05 -04:00
lpfc_mbox.c scsi: lpfc: Fix noderef and address space warnings 2020-05-07 22:47:26 -04:00
lpfc_mem.c scsi: lpfc: Remove lock contention target write path 2019-10-24 21:02:05 -04:00
lpfc_nl.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_nportdisc.c scsi: lpfc: Make lpfc_defer_acc_rsp static 2020-01-10 01:23:47 -05:00
lpfc_nvme.c scsi: lpfc: Remove re-binding of nvme rport during registration 2020-05-07 22:47:21 -04:00
lpfc_nvme.h SCSI misc on 20190306 2019-03-09 16:53:47 -08:00
lpfc_nvmet.c scsi: lpfc: remove duplicate unloading checks 2020-04-22 00:11:48 -04:00
lpfc_nvmet.h scsi: lpfc: Remove lock contention target write path 2019-10-24 21:02:05 -04:00
lpfc_scsi.c scsi: lpfc: Make debugfs ktime stats generic for NVME and SCSI 2020-03-29 18:10:58 -04:00
lpfc_scsi.h scsi: lpfc: Update 12.2.0.0 file copyrights to 2019 2019-02-05 22:29:50 -05:00
lpfc_sli.c scsi: lpfc: Fix noderef and address space warnings 2020-05-07 22:47:26 -04:00
lpfc_sli.h scsi: lpfc: Make debugfs ktime stats generic for NVME and SCSI 2020-03-29 18:10:58 -04:00
lpfc_sli4.h scsi: lpfc: Change default queue allocation for reduced memory consumption 2020-05-07 22:47:24 -04:00
lpfc_version.h scsi: lpfc: Update lpfc version to 12.8.0.1 2020-05-07 22:47:27 -04:00
lpfc_vport.c scsi: lpfc: Fix issuing init_vpi mbox on SLI-3 card 2019-08-19 22:41:09 -04:00
lpfc_vport.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00