projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
accd846
)
[CPUFREQ] fix memory leak in cpufreq_add_dev
author
Xiaotian Feng
<
[email protected]
>
Tue, 20 Jul 2010 12:11:02 +0000
(20:11 +0800)
committer
Dave Jones
<
[email protected]
>
Mon, 26 Jul 2010 19:25:33 +0000
(15:25 -0400)
We didn't free policy->related_cpus in error path err_unlock_policy.
This is catched by following kmemleak report:
unreferenced object 0xffff88022a0b96d0 (size 512):
comm "modprobe", pid 886, jiffies
4294689177
(age 780.694s)
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:
[<
ffffffff8111ebe5
>] create_object+0x186/0x281
[<
ffffffff814fad4f
>] kmemleak_alloc+0x60/0xa7
[<
ffffffff8111127a
>] kmem_cache_alloc_node_notrace+0x120/0x142
[<
ffffffff81262e4f
>] alloc_cpumask_var_node+0x2c/0xd7
[<
ffffffff81262f0b
>] alloc_cpumask_var+0x11/0x13
[<
ffffffff81262f1c
>] zalloc_cpumask_var+0xf/0x11
[<
ffffffff8140fac0
>] cpufreq_add_dev+0x11f/0x547
[<
ffffffff81334bda
>] sysdev_driver_register+0xc2/0x11d
[<
ffffffff8140e334
>] cpufreq_register_driver+0xcb/0x1b8
[<
ffffffffa032e040
>] 0xffffffffa032e040
[<
ffffffff810021ba
>] do_one_initcall+0x5e/0x15c
[<
ffffffff81087f94
>] sys_init_module+0xa6/0x1e6
[<
ffffffff81009bc2
>] system_call_fastpath+0x16/0x1b
[<
ffffffffffffffff
>] 0xffffffffffffffff
Signed-off-by: Xiaotian Feng <
[email protected]
>
Cc: Thomas Renninger <
[email protected]
>
Cc: Prarit Bhargava <
[email protected]
>
Signed-off-by: Dave Jones <
[email protected]
>
drivers/cpufreq/cpufreq.c
patch
|
blob
|
history
diff --git
a/drivers/cpufreq/cpufreq.c
b/drivers/cpufreq/cpufreq.c
index 8f22ce1ea6844d1a893ce97e0414a16c1e688b10..938b74ea9ffbee8e6c195baa2eae97520c7a07cb 100644
(file)
--- a/
drivers/cpufreq/cpufreq.c
+++ b/
drivers/cpufreq/cpufreq.c
@@
-1077,6
+1077,7
@@
err_out_unregister:
err_unlock_policy:
unlock_policy_rwsem_write(cpu);
+ free_cpumask_var(policy->related_cpus);
err_free_cpumask:
free_cpumask_var(policy->cpus);
err_free_policy: