xip: fix get_zeroed_page with __GFP_HIGHMEM

The use of get_zeroed_page() with __GFP_HIGHMEM is invalid.  Use
alloc_page() with __GFP_ZERO instead of invalid get_zeroed_page().

(This patch is only compile tested)

Cc: Carsten Otte <cotte@de.ibm.com>
Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Acked-by: Hugh Dickins <hugh@veritas.com>
Acked-by: Carsten Otte <cotte@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Akinobu Mita 2008-01-08 15:32:57 -08:00 коммит произвёл Linus Torvalds
Родитель 0f94e87cde
Коммит c51b1a160b
1 изменённых файлов: 5 добавлений и 4 удалений

Просмотреть файл

@ -25,14 +25,15 @@ static struct page *__xip_sparse_page;
static struct page *xip_sparse_page(void) static struct page *xip_sparse_page(void)
{ {
if (!__xip_sparse_page) { if (!__xip_sparse_page) {
unsigned long zeroes = get_zeroed_page(GFP_HIGHUSER); struct page *page = alloc_page(GFP_HIGHUSER | __GFP_ZERO);
if (zeroes) {
if (page) {
static DEFINE_SPINLOCK(xip_alloc_lock); static DEFINE_SPINLOCK(xip_alloc_lock);
spin_lock(&xip_alloc_lock); spin_lock(&xip_alloc_lock);
if (!__xip_sparse_page) if (!__xip_sparse_page)
__xip_sparse_page = virt_to_page(zeroes); __xip_sparse_page = page;
else else
free_page(zeroes); __free_page(page);
spin_unlock(&xip_alloc_lock); spin_unlock(&xip_alloc_lock);
} }
} }