]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
trace: Fix inappropriate substraction on tracing_pages_allocated in trace_free_page()
authorWang Sheng-Hui <crosslonelyover@gmail.com>
Tue, 13 Apr 2010 13:04:10 +0000 (21:04 +0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 26 May 2010 21:27:07 +0000 (14:27 -0700)
[No matching upstream git commit id as it was fixed differently due to a
rewrite of the tracing code there.]

For normal case, the code in trace_free_page() do once more substraction
on tracing_pages_allocated, but for CONFIG_TRACER_MAX_TRACE  it doesn't
take the freed page into account. That's not consistent with
trace_alloc_page().  Well, for there are no message related with this,
so we cannot observe its incorrect state when the kernel doesn't define
"CONFIG_TRACER_MAX_TRACE". If you add some pr_info() as
trace_alloc_page(), you may notice it.

Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Li Zefan <lizf@cn.fujitsu.com>
Signed-off-by: Wang Sheng-Hui <crosslonelyover@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
kernel/trace/trace.c

index 8f3fb3db61c39306bdbffd36303cfed7dab02420..dfe39952622bffcf6fc41c84e686bc0e3bc53997 100644 (file)
@@ -3018,7 +3018,6 @@ static int trace_free_page(void)
                ClearPageLRU(page);
                list_del(&page->lru);
                tracing_pages_allocated--;
-               tracing_pages_allocated--;
                __free_page(page);
 
                tracing_reset(data);
@@ -3036,6 +3035,7 @@ static int trace_free_page(void)
                page = list_entry(p, struct page, lru);
                ClearPageLRU(page);
                list_del(&page->lru);
+               tracing_pages_allocated--;
                __free_page(page);
 
                tracing_reset(data);