aboutsummaryrefslogtreecommitdiffstats
path: root/mm/percpu-vm.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/percpu-vm.c')
-rw-r--r--mm/percpu-vm.c12
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
349static void pcpu_destroy_chunk(struct pcpu_chunk *chunk) 353static 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}