Messages in this thread Patch in this message | | | Date | Sun, 16 Nov 2008 12:33:51 +0800 | From | Lai Jiangshan <> | Subject | [PATCH 4/7] relay: use simple_malloc()/simple_free() |
| |
simple_malloc()/simple_free() are same as current code. so we simple_malloc()/simple_free() instead of current code.
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com> --- diff --git a/kernel/relay.c b/kernel/relay.c index 8d13a78..718dd60 100644 --- a/kernel/relay.c +++ b/kernel/relay.c @@ -65,35 +65,6 @@ static struct vm_operations_struct relay_file_mmap_ops = { .close = relay_file_mmap_close, }; -/* - * allocate an array of pointers of struct page - */ -static struct page **relay_alloc_page_array(unsigned int n_pages) -{ - struct page **array; - size_t pa_size = n_pages * sizeof(struct page *); - - if (pa_size > PAGE_SIZE) { - array = vmalloc(pa_size); - if (array) - memset(array, 0, pa_size); - } else { - array = kzalloc(pa_size, GFP_KERNEL); - } - return array; -} - -/* - * free an array of pointers of struct page - */ -static void relay_free_page_array(struct page **array) -{ - if (is_vmalloc_addr(array)) - vfree(array); - else - kfree(array); -} - /** * relay_mmap_buf: - mmap channel buffer to process address space * @buf: relay channel buffer @@ -138,9 +109,10 @@ static void *relay_alloc_buf(struct rchan_buf *buf, size_t *size) *size = PAGE_ALIGN(*size); n_pages = *size >> PAGE_SHIFT; - buf->page_array = relay_alloc_page_array(n_pages); + buf->page_array = simple_malloc(sizeof(struct page *) * n_pages); if (!buf->page_array) return NULL; + memset(buf->page_array, 0, sizeof(struct page *) * n_pages); for (i = 0; i < n_pages; i++) { buf->page_array[i] = alloc_page(GFP_KERNEL); @@ -159,7 +131,7 @@ static void *relay_alloc_buf(struct rchan_buf *buf, size_t *size) depopulate: for (j = 0; j < i; j++) __free_page(buf->page_array[j]); - relay_free_page_array(buf->page_array); + simple_free(buf->page_array); return NULL; } @@ -218,7 +190,7 @@ static void relay_destroy_buf(struct rchan_buf *buf) vunmap(buf->start); for (i = 0; i < buf->page_count; i++) __free_page(buf->page_array[i]); - relay_free_page_array(buf->page_array); + simple_free(buf->page_array); } chan->buf[buf->cpu] = NULL; kfree(buf->padding);
| |