diff options
author | Namhyung Kim <namhyung@kernel.org> | 2014-06-11 04:06:53 -0400 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2014-07-01 07:13:40 -0400 |
commit | 1f61be007e16a5d60b1cf868aa30d87f181e8e14 (patch) | |
tree | c35734b8355041e7bec6bf6ff9f4777abbc79fe5 /kernel/trace/ftrace.c | |
parent | a737e6dd7bfbd6d87ce1525840e6957bcb6e47e6 (diff) |
ftrace: Fix memory leak on failure path in ftrace_allocate_pages()
As struct ftrace_page is managed in a single linked list, it should
free from the start page.
Link: http://lkml.kernel.org/p/1402474014-28655-1-git-send-email-namhyung@kernel.org
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace/ftrace.c')
-rw-r--r-- | kernel/trace/ftrace.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 39df3192e725..e14ff4c1713e 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c | |||
@@ -2637,7 +2637,8 @@ ftrace_allocate_pages(unsigned long num_to_init) | |||
2637 | return start_pg; | 2637 | return start_pg; |
2638 | 2638 | ||
2639 | free_pages: | 2639 | free_pages: |
2640 | while (start_pg) { | 2640 | pg = start_pg; |
2641 | while (pg) { | ||
2641 | order = get_count_order(pg->size / ENTRIES_PER_PAGE); | 2642 | order = get_count_order(pg->size / ENTRIES_PER_PAGE); |
2642 | free_pages((unsigned long)pg->records, order); | 2643 | free_pages((unsigned long)pg->records, order); |
2643 | start_pg = pg->next; | 2644 | start_pg = pg->next; |