diff --git a/kernel/fork.c b/kernel/fork.c index 0abd8434b714..75b1a4458a7e 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -452,7 +452,7 @@ struct kmem_cache *files_cachep; struct kmem_cache *fs_cachep; /* SLAB cache for vm_area_struct structures */ -static struct kmem_cache *vm_area_cachep; +struct kmem_cache *vm_area_cachep; /* SLAB cache for mm_struct structures (tsk->mm) */ static struct kmem_cache *mm_cachep; diff --git a/mm/pgsize_migration.c b/mm/pgsize_migration.c index 3b020924a7a9..f72240b0de79 100644 --- a/mm/pgsize_migration.c +++ b/mm/pgsize_migration.c @@ -270,6 +270,9 @@ static const struct vm_operations_struct pad_vma_ops = { .name = pad_vma_name, }; +/* Defined in kernel/fork.c */ +extern struct kmem_cache *vm_area_cachep; + /* * Returns a new VMA representing the padding in @vma; * returns NULL if no padding in @vma or allocation failed. @@ -281,7 +284,7 @@ static struct vm_area_struct *get_pad_vma(struct vm_area_struct *vma) if (!is_pgsize_migration_enabled() || !(vma->vm_flags & VM_PAD_MASK)) return NULL; - pad = kzalloc(sizeof(struct vm_area_struct), GFP_KERNEL); + pad = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); if (!pad) { pr_warn("Page size migration: Failed to allocate padding VMA"); return NULL; @@ -347,7 +350,7 @@ void show_map_pad_vma(struct vm_area_struct *vma, struct seq_file *m, else ((show_pad_maps_fn)func)(m, pad); - kfree(pad); + kmem_cache_free(vm_area_cachep, pad); } /*