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:
parent
0f94e87cde
commit
c51b1a160b
1 changed files with 5 additions and 4 deletions
|
@ -25,14 +25,15 @@ static struct page *__xip_sparse_page;
|
|||
static struct page *xip_sparse_page(void)
|
||||
{
|
||||
if (!__xip_sparse_page) {
|
||||
unsigned long zeroes = get_zeroed_page(GFP_HIGHUSER);
|
||||
if (zeroes) {
|
||||
struct page *page = alloc_page(GFP_HIGHUSER | __GFP_ZERO);
|
||||
|
||||
if (page) {
|
||||
static DEFINE_SPINLOCK(xip_alloc_lock);
|
||||
spin_lock(&xip_alloc_lock);
|
||||
if (!__xip_sparse_page)
|
||||
__xip_sparse_page = virt_to_page(zeroes);
|
||||
__xip_sparse_page = page;
|
||||
else
|
||||
free_page(zeroes);
|
||||
__free_page(page);
|
||||
spin_unlock(&xip_alloc_lock);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue