|
@@ -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);
|
|
|
}
|
|
|
}
|