Jiri Slaby ef7db2
From: Liwei Song <liwei.song@windriver.com>
Jiri Slaby ef7db2
Date: Fri, 6 Jan 2023 17:47:29 +0800
Jiri Slaby ef7db2
Subject: [PATCH] drm/radeon: free iio for atombios when driver shutdown
Jiri Slaby ef7db2
References: bsc#1012628
Jiri Slaby ef7db2
Patch-mainline: 6.2.3
Jiri Slaby ef7db2
Git-commit: 4773fadedca918faec443daaca5e4ea1c0ced144
Jiri Slaby ef7db2
Jiri Slaby ef7db2
[ Upstream commit 4773fadedca918faec443daaca5e4ea1c0ced144 ]
Jiri Slaby ef7db2
Jiri Slaby ef7db2
Fix below kmemleak when unload radeon driver:
Jiri Slaby ef7db2
Jiri Slaby ef7db2
unreferenced object 0xffff9f8608ede200 (size 512):
Jiri Slaby ef7db2
  comm "systemd-udevd", pid 326, jiffies 4294682822 (age 716.338s)
Jiri Slaby ef7db2
  hex dump (first 32 bytes):
Jiri Slaby ef7db2
    00 00 00 00 c4 aa ec aa 14 ab 00 00 00 00 00 00  ................
Jiri Slaby ef7db2
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
Jiri Slaby ef7db2
  backtrace:
Jiri Slaby ef7db2
    [<0000000062fadebe>] kmem_cache_alloc_trace+0x2f1/0x500
Jiri Slaby ef7db2
    [<00000000b6883cea>] atom_parse+0x117/0x230 [radeon]
Jiri Slaby ef7db2
    [<00000000158c23fd>] radeon_atombios_init+0xab/0x170 [radeon]
Jiri Slaby ef7db2
    [<00000000683f672e>] si_init+0x57/0x750 [radeon]
Jiri Slaby ef7db2
    [<00000000566cc31f>] radeon_device_init+0x559/0x9c0 [radeon]
Jiri Slaby ef7db2
    [<0000000046efabb3>] radeon_driver_load_kms+0xc1/0x1a0 [radeon]
Jiri Slaby ef7db2
    [<00000000b5155064>] drm_dev_register+0xdd/0x1d0
Jiri Slaby ef7db2
    [<0000000045fec835>] radeon_pci_probe+0xbd/0x100 [radeon]
Jiri Slaby ef7db2
    [<00000000e69ecca3>] pci_device_probe+0xe1/0x160
Jiri Slaby ef7db2
    [<0000000019484b76>] really_probe.part.0+0xc1/0x2c0
Jiri Slaby ef7db2
    [<000000003f2649da>] __driver_probe_device+0x96/0x130
Jiri Slaby ef7db2
    [<00000000231c5bb1>] driver_probe_device+0x24/0xf0
Jiri Slaby ef7db2
    [<0000000000a42377>] __driver_attach+0x77/0x190
Jiri Slaby ef7db2
    [<00000000d7574da6>] bus_for_each_dev+0x7f/0xd0
Jiri Slaby ef7db2
    [<00000000633166d2>] driver_attach+0x1e/0x30
Jiri Slaby ef7db2
    [<00000000313b05b8>] bus_add_driver+0x12c/0x1e0
Jiri Slaby ef7db2
Jiri Slaby ef7db2
iio was allocated in atom_index_iio() called by atom_parse(),
Jiri Slaby ef7db2
but it doesn't got released when the dirver is shutdown.
Jiri Slaby ef7db2
Fix this kmemleak by free it in radeon_atombios_fini().
Jiri Slaby ef7db2
Jiri Slaby ef7db2
Signed-off-by: Liwei Song <liwei.song@windriver.com>
Jiri Slaby ef7db2
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Jiri Slaby ef7db2
Signed-off-by: Sasha Levin <sashal@kernel.org>
Jiri Slaby ef7db2
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Jiri Slaby ef7db2
---
Jiri Slaby ef7db2
 drivers/gpu/drm/radeon/radeon_device.c | 1 +
Jiri Slaby ef7db2
 1 file changed, 1 insertion(+)
Jiri Slaby ef7db2
Jiri Slaby ef7db2
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
Jiri Slaby ef7db2
index 6344454a..4f9729b4 100644
Jiri Slaby ef7db2
--- a/drivers/gpu/drm/radeon/radeon_device.c
Jiri Slaby ef7db2
+++ b/drivers/gpu/drm/radeon/radeon_device.c
Jiri Slaby ef7db2
@@ -1023,6 +1023,7 @@ void radeon_atombios_fini(struct radeon_device *rdev)
Jiri Slaby ef7db2
 {
Jiri Slaby ef7db2
 	if (rdev->mode_info.atom_context) {
Jiri Slaby ef7db2
 		kfree(rdev->mode_info.atom_context->scratch);
Jiri Slaby ef7db2
+		kfree(rdev->mode_info.atom_context->iio);
Jiri Slaby ef7db2
 	}
Jiri Slaby ef7db2
 	kfree(rdev->mode_info.atom_context);
Jiri Slaby ef7db2
 	rdev->mode_info.atom_context = NULL;
Jiri Slaby ef7db2
-- 
Jiri Slaby ef7db2
2.35.3
Jiri Slaby ef7db2