diff options
Diffstat (limited to 'mm/percpu-vm.c')
-rw-r--r-- | mm/percpu-vm.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/mm/percpu-vm.c b/mm/percpu-vm.c index 9ac639499bd1..15dab691ea70 100644 --- a/mm/percpu-vm.c +++ b/mm/percpu-vm.c | |||
@@ -343,12 +343,22 @@ static struct pcpu_chunk *pcpu_create_chunk(void) | |||
343 | 343 | ||
344 | chunk->data = vms; | 344 | chunk->data = vms; |
345 | chunk->base_addr = vms[0]->addr - pcpu_group_offsets[0]; | 345 | chunk->base_addr = vms[0]->addr - pcpu_group_offsets[0]; |
346 | |||
347 | pcpu_stats_chunk_alloc(); | ||
348 | trace_percpu_create_chunk(chunk->base_addr); | ||
349 | |||
346 | return chunk; | 350 | return chunk; |
347 | } | 351 | } |
348 | 352 | ||
349 | static void pcpu_destroy_chunk(struct pcpu_chunk *chunk) | 353 | static void pcpu_destroy_chunk(struct pcpu_chunk *chunk) |
350 | { | 354 | { |
351 | if (chunk && chunk->data) | 355 | if (!chunk) |
356 | return; | ||
357 | |||
358 | pcpu_stats_chunk_dealloc(); | ||
359 | trace_percpu_destroy_chunk(chunk->base_addr); | ||
360 | |||
361 | if (chunk->data) | ||
352 | pcpu_free_vm_areas(chunk->data, pcpu_nr_groups); | 362 | pcpu_free_vm_areas(chunk->data, pcpu_nr_groups); |
353 | pcpu_free_chunk(chunk); | 363 | pcpu_free_chunk(chunk); |
354 | } | 364 | } |