diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-12-17 17:05:49 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-12-17 17:05:49 -0800 |
commit | d9cb5bfcc3339f1a63df8fe0af8cece33c83c3af (patch) | |
tree | 091dea1a92466e87e2171bbd18f2e3f4908d5f4a /arch/tile/kernel/module.c | |
parent | 0f484e42baaf5a38fc79e99b917caa5431651fb1 (diff) | |
parent | 14e73e78ee982710292248536aa84cba41e974f4 (diff) | |
download | linux-d9cb5bfcc3339f1a63df8fe0af8cece33c83c3af.tar.bz2 |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile
Pull arch/tile updates from Chris Metcalf:
"Another grab-bag of miscellaneous changes"
* git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:
tile: use __ro_after_init instead of tile-specific __write_once
tile: migrate exception table users off module.h and onto extable.h
tile: remove #pragma unroll from finv_buffer_remote()
tile-module: Rename jump labels in module_alloc()
tile-module: Use kmalloc_array() in module_alloc()
tile/pci_gx: fix spelling mistake: "delievered" -> "delivered"
Diffstat (limited to 'arch/tile/kernel/module.c')
-rw-r--r-- | arch/tile/kernel/module.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/arch/tile/kernel/module.c b/arch/tile/kernel/module.c index 2305084c9b93..09233fbe7801 100644 --- a/arch/tile/kernel/module.c +++ b/arch/tile/kernel/module.c @@ -43,29 +43,28 @@ void *module_alloc(unsigned long size) int npages; npages = (size + PAGE_SIZE - 1) / PAGE_SIZE; - pages = kmalloc(npages * sizeof(struct page *), GFP_KERNEL); + pages = kmalloc_array(npages, sizeof(*pages), GFP_KERNEL); if (pages == NULL) return NULL; for (; i < npages; ++i) { pages[i] = alloc_page(GFP_KERNEL | __GFP_HIGHMEM); if (!pages[i]) - goto error; + goto free_pages; } area = __get_vm_area(size, VM_ALLOC, MEM_MODULE_START, MEM_MODULE_END); if (!area) - goto error; + goto free_pages; area->nr_pages = npages; area->pages = pages; if (map_vm_area(area, prot_rwx, pages)) { vunmap(area->addr); - goto error; + goto free_pages; } return area->addr; - -error: + free_pages: while (--i >= 0) __free_page(pages[i]); kfree(pages); |