diff options
Diffstat (limited to 'kernel/trace/tracing_map.c')
-rw-r--r-- | kernel/trace/tracing_map.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/kernel/trace/tracing_map.c b/kernel/trace/tracing_map.c index 0a689bbb78ef..305039b122fa 100644 --- a/kernel/trace/tracing_map.c +++ b/kernel/trace/tracing_map.c | |||
@@ -221,16 +221,19 @@ void tracing_map_array_free(struct tracing_map_array *a) | |||
221 | if (!a) | 221 | if (!a) |
222 | return; | 222 | return; |
223 | 223 | ||
224 | if (!a->pages) { | 224 | if (!a->pages) |
225 | kfree(a); | 225 | goto free; |
226 | return; | ||
227 | } | ||
228 | 226 | ||
229 | for (i = 0; i < a->n_pages; i++) { | 227 | for (i = 0; i < a->n_pages; i++) { |
230 | if (!a->pages[i]) | 228 | if (!a->pages[i]) |
231 | break; | 229 | break; |
232 | free_page((unsigned long)a->pages[i]); | 230 | free_page((unsigned long)a->pages[i]); |
233 | } | 231 | } |
232 | |||
233 | kfree(a->pages); | ||
234 | |||
235 | free: | ||
236 | kfree(a); | ||
234 | } | 237 | } |
235 | 238 | ||
236 | struct tracing_map_array *tracing_map_array_alloc(unsigned int n_elts, | 239 | struct tracing_map_array *tracing_map_array_alloc(unsigned int n_elts, |