aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-05-19 16:44:13 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2011-05-19 16:44:13 -0700
commit83d7e948754cf021ed7343b122940fcc27c1bd88 (patch)
treef04ba1ecb4fa337fc2bbd49b44df07775e4636ff
parentfce4a1dda2f1a9a25b3e5b7cd951070e0b42a818 (diff)
parent9b090f2da85bd0df5e1a1ecfe4120b7b50358f48 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-2.6-cm
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-2.6-cm: kmemleak: Initialise kmemleak after debug_objects_mem_init() kmemleak: Select DEBUG_FS unconditionally in DEBUG_KMEMLEAK kmemleak: Do not return a pointer to an object that kmemleak did not get
-rw-r--r--init/main.c2
-rw-r--r--lib/Kconfig.debug2
-rw-r--r--mm/kmemleak.c7
3 files changed, 7 insertions, 4 deletions
diff --git a/init/main.c b/init/main.c
index 4a9479ef454..48df882d51d 100644
--- a/init/main.c
+++ b/init/main.c
@@ -580,8 +580,8 @@ asmlinkage void __init start_kernel(void)
#endif
page_cgroup_init();
enable_debug_pagealloc();
- kmemleak_init();
debug_objects_mem_init();
+ kmemleak_init();
setup_per_cpu_pageset();
numa_policy_init();
if (late_time_init)
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index f0aa00ba3fa..17ac5f87182 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -400,7 +400,7 @@ config DEBUG_KMEMLEAK
depends on DEBUG_KERNEL && EXPERIMENTAL && !MEMORY_HOTPLUG && \
(X86 || ARM || PPC || MIPS || S390 || SPARC64 || SUPERH || MICROBLAZE || TILE)
- select DEBUG_FS if SYSFS
+ select DEBUG_FS
select STACKTRACE if STACKTRACE_SUPPORT
select KALLSYMS
select CRC32
diff --git a/mm/kmemleak.c b/mm/kmemleak.c
index c1d5867543e..aacee45616f 100644
--- a/mm/kmemleak.c
+++ b/mm/kmemleak.c
@@ -1414,9 +1414,12 @@ static void *kmemleak_seq_next(struct seq_file *seq, void *v, loff_t *pos)
++(*pos);
list_for_each_continue_rcu(n, &object_list) {
- next_obj = list_entry(n, struct kmemleak_object, object_list);
- if (get_object(next_obj))
+ struct kmemleak_object *obj =
+ list_entry(n, struct kmemleak_object, object_list);
+ if (get_object(obj)) {
+ next_obj = obj;
break;
+ }
}
put_object(prev_obj);