From 8811d242c04d6c4aea9cfb9b14e57f59d7dbf265 Mon Sep 17 00:00:00 2001 From: Heesub Shin Date: Wed, 28 May 2014 15:52:54 +0900 Subject: [PATCH] staging: ion: remove struct ion_page_pool_item The page pool uses an internal data structure, ion_page_pool_item, for wrapping pooled pages and constructing a list. As the struct page already provides ways for doing exactly the same thing, we do not need to reinvent the wheel. This commit removes the data structure and slab allocations for it. Signed-off-by: Heesub Shin Reviewed-by: Mitchel Humpherys Tested-by: John Stultz Signed-off-by: Greg Kroah-Hartman --- drivers/staging/android/ion/ion_page_pool.c | 27 ++++----------------- 1 file changed, 5 insertions(+), 22 deletions(-) diff --git a/drivers/staging/android/ion/ion_page_pool.c b/drivers/staging/android/ion/ion_page_pool.c index 168478077cb86..111777c6e25ab 100644 --- a/drivers/staging/android/ion/ion_page_pool.c +++ b/drivers/staging/android/ion/ion_page_pool.c @@ -23,11 +23,6 @@ #include #include "ion_priv.h" -struct ion_page_pool_item { - struct page *page; - struct list_head list; -}; - static void *ion_page_pool_alloc_pages(struct ion_page_pool *pool) { struct page *page = alloc_pages(pool->gfp_mask, pool->order); @@ -47,19 +42,12 @@ static void ion_page_pool_free_pages(struct ion_page_pool *pool, static int ion_page_pool_add(struct ion_page_pool *pool, struct page *page) { - struct ion_page_pool_item *item; - - item = kmalloc(sizeof(struct ion_page_pool_item), GFP_KERNEL); - if (!item) - return -ENOMEM; - mutex_lock(&pool->mutex); - item->page = page; if (PageHighMem(page)) { - list_add_tail(&item->list, &pool->high_items); + list_add_tail(&page->lru, &pool->high_items); pool->high_count++; } else { - list_add_tail(&item->list, &pool->low_items); + list_add_tail(&page->lru, &pool->low_items); pool->low_count++; } mutex_unlock(&pool->mutex); @@ -68,24 +56,19 @@ static int ion_page_pool_add(struct ion_page_pool *pool, struct page *page) static struct page *ion_page_pool_remove(struct ion_page_pool *pool, bool high) { - struct ion_page_pool_item *item; struct page *page; if (high) { BUG_ON(!pool->high_count); - item = list_first_entry(&pool->high_items, - struct ion_page_pool_item, list); + page = list_first_entry(&pool->high_items, struct page, lru); pool->high_count--; } else { BUG_ON(!pool->low_count); - item = list_first_entry(&pool->low_items, - struct ion_page_pool_item, list); + page = list_first_entry(&pool->low_items, struct page, lru); pool->low_count--; } - list_del(&item->list); - page = item->page; - kfree(item); + list_del(&page->lru); return page; } -- 2.39.5