blob: 60f4c4ec9b9b2dfe57c2d5d2e757bab797b47ba2 [file] [log] [blame]
From crosslonelyover@gmail.com Wed Apr 21 12:08:05 2010
From: Wang Sheng-Hui <crosslonelyover@gmail.com>
Date: Tue, 13 Apr 2010 21:04:10 +0800
Subject: trace: Fix inappropriate substraction on tracing_pages_allocated in trace_free_page()
To: Greg KH <greg@kroah.com>
Cc: stable@kernel.org
Message-ID: <i2g5a774f4c1004130604vbd24fc79y911d34408ff7e6f0@mail.gmail.com>
From: Wang Sheng-Hui <crosslonelyover@gmail.com>
[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 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -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);