perf/x86/amd/uncore: Fix memory leak for events array
When a CPU comes online, the per-CPU NB and LLC uncore contexts are
freed but not the events array within the context structure. This
causes a memory leak as identified by the kmemleak detector.
[...]
unreferenced object 0xffff8c5944b8e320 (size 32):
comm "swapper/0", pid 1, jiffies
4294670387 (age 151.072s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace:
[<
000000000759fb79>] amd_uncore_cpu_up_prepare+0xaf/0x230
[<
00000000ddc9e126>] cpuhp_invoke_callback+0x2cf/0x470
[<
0000000093e727d4>] cpuhp_issue_call+0x14d/0x170
[<
0000000045464d54>] __cpuhp_setup_state_cpuslocked+0x11e/0x330
[<
0000000069f67cbd>] __cpuhp_setup_state+0x6b/0x110
[<
0000000015365e0f>] amd_uncore_init+0x260/0x321
[<
00000000089152d2>] do_one_initcall+0x3f/0x1f0
[<
000000002d0bd18d>] kernel_init_freeable+0x1ca/0x212
[<
0000000030be8dde>] kernel_init+0x11/0x120
[<
0000000059709e59>] ret_from_fork+0x22/0x30
unreferenced object 0xffff8c5944b8dd40 (size 64):
comm "swapper/0", pid 1, jiffies
4294670387 (age 151.072s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace:
[<
00000000306efe8b>] amd_uncore_cpu_up_prepare+0x183/0x230
[<
00000000ddc9e126>] cpuhp_invoke_callback+0x2cf/0x470
[<
0000000093e727d4>] cpuhp_issue_call+0x14d/0x170
[<
0000000045464d54>] __cpuhp_setup_state_cpuslocked+0x11e/0x330
[<
0000000069f67cbd>] __cpuhp_setup_state+0x6b/0x110
[<
0000000015365e0f>] amd_uncore_init+0x260/0x321
[<
00000000089152d2>] do_one_initcall+0x3f/0x1f0
[<
000000002d0bd18d>] kernel_init_freeable+0x1ca/0x212
[<
0000000030be8dde>] kernel_init+0x11/0x120
[<
0000000059709e59>] ret_from_fork+0x22/0x30
[...]
Fix the problem by freeing the events array before freeing the uncore
context.
Fixes: 39621c5808f5 ("perf/x86/amd/uncore: Use dynamic events array")
Reported-by: Ravi Bangoria <ravi.bangoria@amd.com>
Signed-off-by: Sandipan Das <sandipan.das@amd.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Tested-by: Ravi Bangoria <ravi.bangoria@amd.com>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/4fa9e5ac6d6e41fa889101e7af7e6ba372cfea52.1662613255.git.sandipan.das@amd.com