]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/2.6.36.2/acpi-cpufreq-fix-a-memleak-when-unloading-driver.patch
Remove duplicated commits
[thirdparty/kernel/stable-queue.git] / releases / 2.6.36.2 / acpi-cpufreq-fix-a-memleak-when-unloading-driver.patch
CommitLineData
d9b1f36d
GKH
1From dab5fff14df2cd16eb1ad4c02e83915e1063fece Mon Sep 17 00:00:00 2001
2From: Zhang Rui <rui.zhang@intel.com>
3Date: Tue, 12 Oct 2010 09:09:37 +0800
4Subject: acpi-cpufreq: fix a memleak when unloading driver
5
6From: Zhang Rui <rui.zhang@intel.com>
7
8commit dab5fff14df2cd16eb1ad4c02e83915e1063fece upstream.
9
10We didn't free per_cpu(acfreq_data, cpu)->freq_table
11when acpi_freq driver is unloaded.
12
13Resulting in the following messages in /sys/kernel/debug/kmemleak:
14
15unreferenced object 0xf6450e80 (size 64):
16 comm "modprobe", pid 1066, jiffies 4294677317 (age 19290.453s)
17 hex dump (first 32 bytes):
18 00 00 00 00 e8 a2 24 00 01 00 00 00 00 9f 24 00 ......$.......$.
19 02 00 00 00 00 6a 18 00 03 00 00 00 00 35 0c 00 .....j.......5..
20 backtrace:
21 [<c123ba97>] kmemleak_alloc+0x27/0x50
22 [<c109f96f>] __kmalloc+0xcf/0x110
23 [<f9da97ee>] acpi_cpufreq_cpu_init+0x1ee/0x4e4 [acpi_cpufreq]
24 [<c11cd8d2>] cpufreq_add_dev+0x142/0x3a0
25 [<c11920b7>] sysdev_driver_register+0x97/0x110
26 [<c11cce56>] cpufreq_register_driver+0x86/0x140
27 [<f9dad080>] 0xf9dad080
28 [<c1001130>] do_one_initcall+0x30/0x160
29 [<c10626e9>] sys_init_module+0x99/0x1e0
30 [<c1002d97>] sysenter_do_call+0x12/0x26
31 [<ffffffff>] 0xffffffff
32
33https://bugzilla.kernel.org/show_bug.cgi?id=15807#c21
34
35Tested-by: Toralf Forster <toralf.foerster@gmx.de>
36Signed-off-by: Zhang Rui <rui.zhang@intel.com>
37Signed-off-by: Len Brown <len.brown@intel.com>
38Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
39
40---
41 arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | 1 +
42 1 file changed, 1 insertion(+)
43
44--- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
45+++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
46@@ -701,6 +701,7 @@ static int acpi_cpufreq_cpu_exit(struct
47 per_cpu(acfreq_data, policy->cpu) = NULL;
48 acpi_processor_unregister_performance(data->acpi_data,
49 policy->cpu);
50+ kfree(data->freq_table);
51 kfree(data);
52 }
53