From: Sasha Levin <sashal@kernel.org> To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Mike Christie <michael.christie@oracle.com>, "Martin K . Petersen" <martin.petersen@oracle.com>, Sasha Levin <sashal@kernel.org>, linux-scsi@vger.kernel.org, target-devel@vger.kernel.org Subject: [PATCH AUTOSEL 5.4 24/48] scsi: target: Fix xcopy sess release leak Date: Fri, 21 Aug 2020 12:16:40 -0400 [thread overview] Message-ID: <20200821161704.348164-24-sashal@kernel.org> (raw) In-Reply-To: <20200821161704.348164-1-sashal@kernel.org> From: Mike Christie <michael.christie@oracle.com> [ Upstream commit 3c006c7d23aac928279f7cbe83bbac4361255d53 ] transport_init_session can allocate memory via percpu_ref_init, and target_xcopy_release_pt never frees it. This adds a transport_uninit_session function to handle cleanup of resources allocated in the init function. Link: https://lore.kernel.org/r/1593654203-12442-3-git-send-email-michael.christie@oracle.com Signed-off-by: Mike Christie <michael.christie@oracle.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/target/target_core_internal.h | 1 + drivers/target/target_core_transport.c | 7 ++++++- drivers/target/target_core_xcopy.c | 11 +++++++++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/target/target_core_internal.h b/drivers/target/target_core_internal.h index 8533444159635..e7b3c6e5d5744 100644 --- a/drivers/target/target_core_internal.h +++ b/drivers/target/target_core_internal.h @@ -138,6 +138,7 @@ int init_se_kmem_caches(void); void release_se_kmem_caches(void); u32 scsi_get_new_index(scsi_index_t); void transport_subsystem_check_init(void); +void transport_uninit_session(struct se_session *); unsigned char *transport_dump_cmd_direction(struct se_cmd *); void transport_dump_dev_state(struct se_device *, char *, int *); void transport_dump_dev_info(struct se_device *, struct se_lun *, diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c index 7c78a5d02c083..b1f4be055f838 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c @@ -236,6 +236,11 @@ int transport_init_session(struct se_session *se_sess) } EXPORT_SYMBOL(transport_init_session); +void transport_uninit_session(struct se_session *se_sess) +{ + percpu_ref_exit(&se_sess->cmd_count); +} + /** * transport_alloc_session - allocate a session object and initialize it * @sup_prot_ops: bitmask that defines which T10-PI modes are supported. @@ -579,7 +584,7 @@ void transport_free_session(struct se_session *se_sess) sbitmap_queue_free(&se_sess->sess_tag_pool); kvfree(se_sess->sess_cmd_map); } - percpu_ref_exit(&se_sess->cmd_count); + transport_uninit_session(se_sess); kmem_cache_free(se_sess_cache, se_sess); } EXPORT_SYMBOL(transport_free_session); diff --git a/drivers/target/target_core_xcopy.c b/drivers/target/target_core_xcopy.c index b9b1e92c6f8db..9d24e85b08631 100644 --- a/drivers/target/target_core_xcopy.c +++ b/drivers/target/target_core_xcopy.c @@ -479,7 +479,7 @@ int target_xcopy_setup_pt(void) memset(&xcopy_pt_sess, 0, sizeof(struct se_session)); ret = transport_init_session(&xcopy_pt_sess); if (ret < 0) - return ret; + goto destroy_wq; xcopy_pt_nacl.se_tpg = &xcopy_pt_tpg; xcopy_pt_nacl.nacl_sess = &xcopy_pt_sess; @@ -488,12 +488,19 @@ int target_xcopy_setup_pt(void) xcopy_pt_sess.se_node_acl = &xcopy_pt_nacl; return 0; + +destroy_wq: + destroy_workqueue(xcopy_wq); + xcopy_wq = NULL; + return ret; } void target_xcopy_release_pt(void) { - if (xcopy_wq) + if (xcopy_wq) { destroy_workqueue(xcopy_wq); + transport_uninit_session(&xcopy_pt_sess); + } } /* -- 2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Sasha Levin <sashal@kernel.org> To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Mike Christie <michael.christie@oracle.com>, "Martin K . Petersen" <martin.petersen@oracle.com>, Sasha Levin <sashal@kernel.org>, linux-scsi@vger.kernel.org, target-devel@vger.kernel.org Subject: [PATCH AUTOSEL 5.4 24/48] scsi: target: Fix xcopy sess release leak Date: Fri, 21 Aug 2020 16:16:40 +0000 [thread overview] Message-ID: <20200821161704.348164-24-sashal@kernel.org> (raw) In-Reply-To: <20200821161704.348164-1-sashal@kernel.org> From: Mike Christie <michael.christie@oracle.com> [ Upstream commit 3c006c7d23aac928279f7cbe83bbac4361255d53 ] transport_init_session can allocate memory via percpu_ref_init, and target_xcopy_release_pt never frees it. This adds a transport_uninit_session function to handle cleanup of resources allocated in the init function. Link: https://lore.kernel.org/r/1593654203-12442-3-git-send-email-michael.christie@oracle.com Signed-off-by: Mike Christie <michael.christie@oracle.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/target/target_core_internal.h | 1 + drivers/target/target_core_transport.c | 7 ++++++- drivers/target/target_core_xcopy.c | 11 +++++++++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/target/target_core_internal.h b/drivers/target/target_core_internal.h index 8533444159635..e7b3c6e5d5744 100644 --- a/drivers/target/target_core_internal.h +++ b/drivers/target/target_core_internal.h @@ -138,6 +138,7 @@ int init_se_kmem_caches(void); void release_se_kmem_caches(void); u32 scsi_get_new_index(scsi_index_t); void transport_subsystem_check_init(void); +void transport_uninit_session(struct se_session *); unsigned char *transport_dump_cmd_direction(struct se_cmd *); void transport_dump_dev_state(struct se_device *, char *, int *); void transport_dump_dev_info(struct se_device *, struct se_lun *, diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c index 7c78a5d02c083..b1f4be055f838 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c @@ -236,6 +236,11 @@ int transport_init_session(struct se_session *se_sess) } EXPORT_SYMBOL(transport_init_session); +void transport_uninit_session(struct se_session *se_sess) +{ + percpu_ref_exit(&se_sess->cmd_count); +} + /** * transport_alloc_session - allocate a session object and initialize it * @sup_prot_ops: bitmask that defines which T10-PI modes are supported. @@ -579,7 +584,7 @@ void transport_free_session(struct se_session *se_sess) sbitmap_queue_free(&se_sess->sess_tag_pool); kvfree(se_sess->sess_cmd_map); } - percpu_ref_exit(&se_sess->cmd_count); + transport_uninit_session(se_sess); kmem_cache_free(se_sess_cache, se_sess); } EXPORT_SYMBOL(transport_free_session); diff --git a/drivers/target/target_core_xcopy.c b/drivers/target/target_core_xcopy.c index b9b1e92c6f8db..9d24e85b08631 100644 --- a/drivers/target/target_core_xcopy.c +++ b/drivers/target/target_core_xcopy.c @@ -479,7 +479,7 @@ int target_xcopy_setup_pt(void) memset(&xcopy_pt_sess, 0, sizeof(struct se_session)); ret = transport_init_session(&xcopy_pt_sess); if (ret < 0) - return ret; + goto destroy_wq; xcopy_pt_nacl.se_tpg = &xcopy_pt_tpg; xcopy_pt_nacl.nacl_sess = &xcopy_pt_sess; @@ -488,12 +488,19 @@ int target_xcopy_setup_pt(void) xcopy_pt_sess.se_node_acl = &xcopy_pt_nacl; return 0; + +destroy_wq: + destroy_workqueue(xcopy_wq); + xcopy_wq = NULL; + return ret; } void target_xcopy_release_pt(void) { - if (xcopy_wq) + if (xcopy_wq) { destroy_workqueue(xcopy_wq); + transport_uninit_session(&xcopy_pt_sess); + } } /* -- 2.25.1
next prev parent reply other threads:[~2020-08-21 17:09 UTC|newest] Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-08-21 16:16 [PATCH AUTOSEL 5.4 01/48] ALSA: hda/hdmi: Add quirk to force connectivity Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 02/48] ALSA: pci: delete repeated words in comments Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 03/48] ALSA: hda/realtek: Fix pin default on Intel NUC 8 Rugged Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 04/48] ALSA: hda/hdmi: Use force connectivity quirk on another HP desktop Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 05/48] ASoC: img: Fix a reference count leak in img_i2s_in_set_fmt Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 06/48] ASoC: img-parallel-out: Fix a reference count leak Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 07/48] ASoC: tegra: Fix reference count leaks Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 08/48] mfd: intel-lpss: Add Intel Emmitsburg PCH PCI IDs Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 09/48] arm64: dts: qcom: msm8916: Pull down PDM GPIOs during sleep Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 10/48] powerpc/xive: Ignore kmemleak false positives Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 11/48] media: pci: ttpci: av7110: fix possible buffer overflow caused by bad DMA value in debiirq() Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 12/48] blktrace: ensure our debugfs dir exists Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 13/48] scsi: target: tcmu: Fix crash on ARM during cmd completion Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 14/48] mfd: intel-lpss: Add Intel Tiger Lake PCH-H PCI IDs Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 15/48] iommu/iova: Don't BUG on invalid PFNs Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 16/48] drm/amdkfd: Fix reference count leaks Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 17/48] drm/radeon: fix multiple reference count leak Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 18/48] drm/amdgpu: fix ref count leak in amdgpu_driver_open_kms Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 19/48] drm/amd/display: fix ref count leak in amdgpu_drm_ioctl Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 20/48] drm/amdgpu: fix ref count leak in amdgpu_display_crtc_set_config Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 21/48] drm/amdgpu/display: fix ref count leak when pm_runtime_get_sync fails Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 22/48] scsi: lpfc: Fix shost refcount mismatch when deleting vport Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 23/48] xfs: Don't allow logging of XFS_ISTALE inodes Sasha Levin 2020-08-21 16:16 ` Sasha Levin [this message] 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 24/48] scsi: target: Fix xcopy sess release leak Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 25/48] selftests/powerpc: Purge extra count_pmc() calls of ebb selftests Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 26/48] f2fs: fix error path in do_recover_data() Sasha Levin 2020-08-21 16:16 ` [f2fs-dev] " Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 27/48] omapfb: fix multiple reference count leaks due to pm_runtime_get_sync Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 28/48] PCI: Fix pci_create_slot() reference count leak Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 29/48] ARM: dts: ls1021a: output PPS signal on FIPER2 Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 30/48] rtlwifi: rtl8192cu: Prevent leaking urb Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 31/48] mips/vdso: Fix resource leaks in genvdso.c Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 32/48] ALSA: hda: Add support for Loongson 7A1000 controller Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 33/48] cec-api: prevent leaking memory through hole in structure Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 34/48] HID: quirks: add NOGET quirk for Logitech GROUP Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 35/48] f2fs: fix use-after-free issue Sasha Levin 2020-08-21 16:16 ` [f2fs-dev] " Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 36/48] drm/nouveau/drm/noveau: fix reference count leak in nouveau_fbcon_open Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 37/48] drm/nouveau: fix reference count leak in nv50_disp_atomic_commit Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 38/48] drm/nouveau: Fix reference count leak in nouveau_connector_detect Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 39/48] locking/lockdep: Fix overflow in presentation of average lock-time Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 40/48] btrfs: file: reserve qgroup space after the hole punch range is locked Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 41/48] btrfs: make btrfs_qgroup_check_reserved_leak take btrfs_inode Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 42/48] scsi: iscsi: Do not put host in iscsi_set_flashnode_param() Sasha Levin 2020-08-21 16:16 ` [PATCH AUTOSEL 5.4 43/48] RDMA/efa: Add EFA 0xefa1 PCI ID Sasha Levin 2020-08-21 16:17 ` [PATCH AUTOSEL 5.4 44/48] ceph: fix potential mdsc use-after-free crash Sasha Levin 2020-08-21 16:17 ` [PATCH AUTOSEL 5.4 45/48] ceph: do not access the kiocb after aio requests Sasha Levin 2020-08-21 16:17 ` [PATCH AUTOSEL 5.4 46/48] scsi: fcoe: Memory leak fix in fcoe_sysfs_fcf_del() Sasha Levin 2020-08-21 16:17 ` [PATCH AUTOSEL 5.4 47/48] EDAC/ie31200: Fallback if host bridge device is already initialized Sasha Levin 2020-08-21 16:17 ` [PATCH AUTOSEL 5.4 48/48] hugetlbfs: prevent filesystem stacking of hugetlbfs Sasha Levin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200821161704.348164-24-sashal@kernel.org \ --to=sashal@kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-scsi@vger.kernel.org \ --cc=martin.petersen@oracle.com \ --cc=michael.christie@oracle.com \ --cc=stable@vger.kernel.org \ --cc=target-devel@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.