From: Catalin Marinas Date: Tue, 1 Sep 2009 10:12:44 +0000 (+0100) Subject: kmemleak: Scan all thread stacks X-Git-Tag: v2.6.32-rc1~735^2~7 X-Git-Url: https://bbs.cooldavid.org/git/?a=commitdiff_plain;h=43ed5d6ee0f9bfd655d6bc3cb2d964b80c4422c0;p=net-next-2.6.git kmemleak: Scan all thread stacks This patch changes the for_each_process() loop with the do_each_thread()/while_each_thread() pair. Signed-off-by: Catalin Marinas --- diff --git a/mm/kmemleak.c b/mm/kmemleak.c index c494fee7a2b..74d4089d758 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c @@ -1074,7 +1074,6 @@ static void kmemleak_scan(void) { unsigned long flags; struct kmemleak_object *object, *tmp; - struct task_struct *task; int i; int new_leaks = 0; int gray_list_pass = 0; @@ -1141,15 +1140,16 @@ static void kmemleak_scan(void) } /* - * Scanning the task stacks may introduce false negatives and it is - * not enabled by default. + * Scanning the task stacks (may introduce false negatives). */ if (kmemleak_stack_scan) { + struct task_struct *p, *g; + read_lock(&tasklist_lock); - for_each_process(task) - scan_block(task_stack_page(task), - task_stack_page(task) + THREAD_SIZE, - NULL, 0); + do_each_thread(g, p) { + scan_block(task_stack_page(p), task_stack_page(p) + + THREAD_SIZE, NULL, 0); + } while_each_thread(g, p); read_unlock(&tasklist_lock); }