projects
/
sdk
/
emulator
/
emulator-kernel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
6e224f9
)
mm/vmscan.c: don't forget to free shrinker->nr_deferred
author
Andrew Vagin
<avagin@openvz.org>
Wed, 16 Oct 2013 20:46:46 +0000
(13:46 -0700)
committer
Linus Torvalds
<torvalds@linux-foundation.org>
Thu, 17 Oct 2013 04:35:52 +0000
(21:35 -0700)
This leak was added by commit
1d3d4437eae1
("vmscan: per-node deferred
work").
unreferenced object 0xffff88006ada3bd0 (size 8):
comm "criu", pid 14781, jiffies
4295238251
(age 105.641s)
hex dump (first 8 bytes):
00 00 00 00 00 00 00 00 ........
backtrace:
[<
ffffffff8170caee
>] kmemleak_alloc+0x5e/0xc0
[<
ffffffff811c0527
>] __kmalloc+0x247/0x310
[<
ffffffff8117848c
>] register_shrinker+0x3c/0xa0
[<
ffffffff811e115b
>] sget+0x5ab/0x670
[<
ffffffff812532f4
>] proc_mount+0x54/0x170
[<
ffffffff811e1893
>] mount_fs+0x43/0x1b0
[<
ffffffff81202dd2
>] vfs_kern_mount+0x72/0x110
[<
ffffffff81202e89
>] kern_mount_data+0x19/0x30
[<
ffffffff812530a0
>] pid_ns_prepare_proc+0x20/0x40
[<
ffffffff81083c56
>] alloc_pid+0x466/0x4a0
[<
ffffffff8105aeda
>] copy_process+0xc6a/0x1860
[<
ffffffff8105beab
>] do_fork+0x8b/0x370
[<
ffffffff8105c1a6
>] SyS_clone+0x16/0x20
[<
ffffffff8171f739
>] stub_clone+0x69/0x90
[<
ffffffffffffffff
>] 0xffffffffffffffff
Signed-off-by: Andrew Vagin <avagin@openvz.org>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Michal Hocko <mhocko@suse.cz>
Cc: Rik van Riel <riel@redhat.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Glauber Costa <glommer@openvz.org>
Cc: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/vmscan.c
patch
|
blob
|
history
diff --git
a/mm/vmscan.c
b/mm/vmscan.c
index 53f2f82f83ae0d16bf19646cdb5b3bce5fc4e4cf..eea668d9cff6c578ada0cf6c02eca5e22de5598d 100644
(file)
--- a/
mm/vmscan.c
+++ b/
mm/vmscan.c
@@
-211,6
+211,7
@@
void unregister_shrinker(struct shrinker *shrinker)
down_write(&shrinker_rwsem);
list_del(&shrinker->list);
up_write(&shrinker_rwsem);
+ kfree(shrinker->nr_deferred);
}
EXPORT_SYMBOL(unregister_shrinker);