vmalloc: use __vmalloc_area in arch/arm
PATCH 2/5 vmalloc: use __vmalloc_area in arch/arm
Replace open coded __vmalloc() with __vmalloc_area().
Uncompiled, untested.
Signed-off-by Oleg Nesterov <[email protected]>
arch/arm/kernel/module.c renamed from arch/arm/kernel/module.c~ +3 -31
@@ -35,44 +35,16 @@ extern void _etext;void *module_alloc (unsigned long size) {struct vm_struct *area; -struct page **pages; -unsigned int array_size, i; size =PAGE_ALIGN (size);if (!size) - goto out_null; +return NULL ; area =__get_vm_area (size,VM_ALLOC ,MODULE_START ,MODULE_END );if (!area) - goto out_null; +return NULL ; - area->nr_pages = size >>PAGE_SHIFT ; - array_size = area->nr_pages *sizeof (struct page *); - area->pages = pages =kmalloc (array_size,GFP_KERNEL ); -if (!area->pages) { -remove_vm_area (area->addr); -kfree (area); - goto out_null; - } - -memset (pages,0 , array_size); - -for (i =0 ; i < area->nr_pages; i++) { - pages[i] =alloc_page (GFP_KERNEL ); -if (unlikely (!pages[i])) { - area->nr_pages = i; - goto out_no_pages; - } - } - -if (map_vm_area (area,PAGE_KERNEL , &pages)) - goto out_no_pages; -return area->addr; - - out_no_pages: -vfree (area->addr); - out_null: -return NULL ; +return __vmalloc_area (area,GFP_KERNEL ,PAGE_KERNEL ); }void module_free (struct module *module,void *region)