Commit 7952f98818d561ed0e11434a7a16acd9a7bae859
1 parent
815c4163b6
kmemleak: Annotate false positive in init_section_page_cgroup()
The pointer to the page_cgroup table allocated in init_section_page_cgroup() is stored in section->page_cgroup as (base - pfn). Since this value does not point to the beginning or inside the allocated memory block, kmemleak reports a false positive. This was reported in bugzilla.kernel.org as #16297. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Reported-by: Adrien Dessemond <adrien.dessemond@gmail.com> Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Pekka Enberg <penberg@cs.helsinki.fi> Cc: Andrew Morton <akpm@linux-foundation.org>
Showing 1 changed file with 7 additions and 0 deletions Side-by-side Diff
mm/page_cgroup.c
... | ... | @@ -9,6 +9,7 @@ |
9 | 9 | #include <linux/vmalloc.h> |
10 | 10 | #include <linux/cgroup.h> |
11 | 11 | #include <linux/swapops.h> |
12 | +#include <linux/kmemleak.h> | |
12 | 13 | |
13 | 14 | static void __meminit |
14 | 15 | __init_page_cgroup(struct page_cgroup *pc, unsigned long pfn) |
... | ... | @@ -126,6 +127,12 @@ |
126 | 127 | if (!base) |
127 | 128 | base = vmalloc(table_size); |
128 | 129 | } |
130 | + /* | |
131 | + * The value stored in section->page_cgroup is (base - pfn) | |
132 | + * and it does not point to the memory block allocated above, | |
133 | + * causing kmemleak false positives. | |
134 | + */ | |
135 | + kmemleak_not_leak(base); | |
129 | 136 | } else { |
130 | 137 | /* |
131 | 138 | * We don't have to allocate page_cgroup again, but |