public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Philip Yang <Philip.Yang@amd.com>,
	Felix Kuehling <Felix.Kuehling@amd.com>,
	Alex Deucher <alexander.deucher@amd.com>,
	Sasha Levin <sashal@kernel.org>,
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: [PATCH AUTOSEL 5.12 32/43] drm/amdkfd: fix sysfs kobj leak
Date: Sat, 10 Jul 2021 19:49:04 -0400	[thread overview]
Message-ID: <20210710234915.3220342-32-sashal@kernel.org> (raw)
In-Reply-To: <20210710234915.3220342-1-sashal@kernel.org>

From: Philip Yang <Philip.Yang@amd.com>

[ Upstream commit dcdb4d904b4bd3078fe8d4d24b1658560d6078ef ]

3 cases of kobj leak, which causes memory leak:

kobj_type must have release() method to free memory from release
callback. Don't need NULL default_attrs to init kobj.

sysfs files created under kobj_status should be removed with kobj_status
as parent kobject.

Remove queue sysfs files when releasing queue from process MMU notifier
release callback.

Signed-off-by: Philip Yang <Philip.Yang@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/amd/amdkfd/kfd_process.c           | 14 ++++++--------
 .../gpu/drm/amd/amdkfd/kfd_process_queue_manager.c |  1 +
 2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
index 65803e153a22..d243e60c6eef 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
@@ -452,13 +452,9 @@ static const struct sysfs_ops procfs_stats_ops = {
 	.show = kfd_procfs_stats_show,
 };
 
-static struct attribute *procfs_stats_attrs[] = {
-	NULL
-};
-
 static struct kobj_type procfs_stats_type = {
 	.sysfs_ops = &procfs_stats_ops,
-	.default_attrs = procfs_stats_attrs,
+	.release = kfd_procfs_kobj_release,
 };
 
 int kfd_procfs_add_queue(struct queue *q)
@@ -973,9 +969,11 @@ static void kfd_process_wq_release(struct work_struct *work)
 		list_for_each_entry(pdd, &p->per_device_data, per_device_list) {
 			sysfs_remove_file(p->kobj, &pdd->attr_vram);
 			sysfs_remove_file(p->kobj, &pdd->attr_sdma);
-			sysfs_remove_file(p->kobj, &pdd->attr_evict);
-			if (pdd->dev->kfd2kgd->get_cu_occupancy != NULL)
-				sysfs_remove_file(p->kobj, &pdd->attr_cu_occupancy);
+
+			sysfs_remove_file(pdd->kobj_stats, &pdd->attr_evict);
+			if (pdd->dev->kfd2kgd->get_cu_occupancy)
+				sysfs_remove_file(pdd->kobj_stats,
+						  &pdd->attr_cu_occupancy);
 			kobject_del(pdd->kobj_stats);
 			kobject_put(pdd->kobj_stats);
 			pdd->kobj_stats = NULL;
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
index eb1635ac8988..43c07ac2c6fc 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
@@ -153,6 +153,7 @@ void pqm_uninit(struct process_queue_manager *pqm)
 		if (pqn->q && pqn->q->gws)
 			amdgpu_amdkfd_remove_gws_from_process(pqm->process->kgd_process_info,
 				pqn->q->gws);
+		kfd_procfs_del_queue(pqn->q);
 		uninit_queue(pqn->q);
 		list_del(&pqn->process_queue_list);
 		kfree(pqn);
-- 
2.30.2


  parent reply	other threads:[~2021-07-10 23:50 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-10 23:48 [PATCH AUTOSEL 5.12 01/43] power: supply: sc27xx: Add missing MODULE_DEVICE_TABLE Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 02/43] power: supply: sc2731_charger: " Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 03/43] f2fs: fix to avoid racing on fsync_entry_slab by multi filesystem instances Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 04/43] pwm: spear: Don't modify HW state in .remove callback Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 05/43] PCI: ftpci100: Rename macro name collision Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 06/43] power: supply: ab8500: Avoid NULL pointers Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 07/43] PCI: hv: Fix a race condition when removing the device Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 08/43] power: supply: max17042: Do not enforce (incorrect) interrupt trigger type Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 09/43] power: reset: gpio-poweroff: add missing MODULE_DEVICE_TABLE Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 10/43] ARM: 9087/1: kprobes: test-thumb: fix for LLVM_IAS=1 Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 11/43] PCI/P2PDMA: Avoid pci_get_slot(), which may sleep Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 12/43] NFSv4: Fix delegation return in cases where we have to retry Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 13/43] PCI: pciehp: Ignore Link Down/Up caused by DPC Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 14/43] PCI: Dynamically map ECAM regions Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 15/43] watchdog: Fix possible use-after-free in wdt_startup() Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 16/43] watchdog: sc520_wdt: Fix possible use-after-free in wdt_turnoff() Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 17/43] watchdog: Fix possible use-after-free by calling del_timer_sync() Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 18/43] watchdog: imx_sc_wdt: fix pretimeout Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 19/43] watchdog: iTCO_wdt: Account for rebooting on second timeout Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 20/43] x86/fpu: Return proper error codes from user access functions Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 21/43] remoteproc: core: Fix cdev remove and rproc del Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 22/43] PCI: tegra: Add missing MODULE_DEVICE_TABLE Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 23/43] orangefs: fix orangefs df output Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 24/43] ceph: remove bogus checks and WARN_ONs from ceph_set_page_dirty Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 25/43] drm/gma500: Add the missed drm_gem_object_put() in psb_user_framebuffer_create() Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 26/43] NFS: nfs_find_open_context() may only select open files Sasha Levin
2021-07-10 23:48 ` [PATCH AUTOSEL 5.12 27/43] power: reset: regulator-poweroff: add missing MODULE_DEVICE_TABLE Sasha Levin
2021-07-10 23:49 ` [PATCH AUTOSEL 5.12 28/43] power: supply: charger-manager: " Sasha Levin
2021-07-10 23:49 ` [PATCH AUTOSEL 5.12 29/43] power: supply: ab8500: " Sasha Levin
2021-07-10 23:49 ` [PATCH AUTOSEL 5.12 30/43] power: supply: axp288_fuel_gauge: Make "T3 MRD" no_battery_list DMI entry more generic Sasha Levin
2021-07-10 23:49 ` [PATCH AUTOSEL 5.12 31/43] drm/amdgpu: fix Navi1x tcp power gating hang when issuing lightweight invalidaiton Sasha Levin
2021-07-10 23:49 ` Sasha Levin [this message]
2021-07-10 23:49 ` [PATCH AUTOSEL 5.12 33/43] pwm: img: Fix PM reference leak in img_pwm_enable() Sasha Levin
2021-07-10 23:49 ` [PATCH AUTOSEL 5.12 34/43] pwm: tegra: Don't modify HW state in .remove callback Sasha Levin
2021-07-10 23:49 ` [PATCH AUTOSEL 5.12 35/43] ACPI: AMBA: Fix resource name in /proc/iomem Sasha Levin
2021-07-10 23:49 ` [PATCH AUTOSEL 5.12 36/43] ACPI: video: Add quirk for the Dell Vostro 3350 Sasha Levin
2021-07-10 23:49 ` [PATCH AUTOSEL 5.12 37/43] PCI: rockchip: Register IRQ handlers after device and data are ready Sasha Levin
2021-07-10 23:49 ` [PATCH AUTOSEL 5.12 38/43] ext4: fix WARN_ON_ONCE(!buffer_uptodate) after an error writing the superblock Sasha Levin
2021-07-10 23:49 ` [PATCH AUTOSEL 5.12 39/43] virtio-blk: Fix memory leak among suspend/resume procedure Sasha Levin
2021-07-10 23:49 ` [PATCH AUTOSEL 5.12 40/43] virtio_net: Fix error handling in virtnet_restore() Sasha Levin
2021-07-10 23:49 ` [PATCH AUTOSEL 5.12 41/43] virtio_console: Assure used length from device is limited Sasha Levin
2021-07-10 23:49 ` [PATCH AUTOSEL 5.12 42/43] virtio: fix up virtio_disable_cb Sasha Levin
2021-07-11  4:23   ` Michael S. Tsirkin
2021-07-18  1:41     ` Sasha Levin
2021-07-10 23:49 ` [PATCH AUTOSEL 5.12 43/43] block: fix the problem of io_ticks becoming smaller 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=20210710234915.3220342-32-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=Felix.Kuehling@amd.com \
    --cc=Philip.Yang@amd.com \
    --cc=alexander.deucher@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox