提交 c3aad494 编写于 作者: L Liu Shixin 提交者: Zheng Zengkai

mm/dynamic_hugetlb: check page using check_new_page

hulk inclusion
category: bugfix
bugzilla: 46904 https://gitee.com/openeuler/kernel/issues/I4Y0XO

--------------------------------

Use check_new_page to check the page to be allocated.
Signed-off-by: NLiu Shixin <liushixin2@huawei.com>
Reviewed-by: NKefeng Wang <wangkefeng.wang@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 d0c9c735
......@@ -476,20 +476,23 @@ static struct page *__alloc_page_from_dhugetlb_pool(void)
*/
spin_lock_irqsave(&percpu_pool->lock, flags);
if (percpu_pool->free_pages == 0) {
int ret;
spin_lock(&hpool->lock);
ret = add_pages_to_percpu_pool(hpool, percpu_pool,
PERCPU_POOL_PAGE_BATCH);
spin_unlock(&hpool->lock);
if (ret)
goto unlock;
}
do {
page = NULL;
if (percpu_pool->free_pages == 0) {
int ret;
spin_lock(&hpool->lock);
ret = add_pages_to_percpu_pool(hpool, percpu_pool,
PERCPU_POOL_PAGE_BATCH);
spin_unlock(&hpool->lock);
if (ret)
goto unlock;
}
page = list_entry(percpu_pool->head_page.next, struct page, lru);
list_del(&page->lru);
percpu_pool->free_pages--;
page = list_entry(percpu_pool->head_page.next, struct page, lru);
list_del(&page->lru);
percpu_pool->free_pages--;
} while (page && check_new_page(page));
percpu_pool->used_pages++;
SetPagePool(page);
......
......@@ -195,6 +195,7 @@ extern void memblock_free_pages(struct page *page, unsigned long pfn,
unsigned int order);
extern void __free_pages_core(struct page *page, unsigned int order);
extern void prep_compound_page(struct page *page, unsigned int order);
extern int check_new_page(struct page *page);
extern void post_alloc_hook(struct page *page, unsigned int order,
gfp_t gfp_flags);
extern void prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags,
......
......@@ -2204,7 +2204,7 @@ static void check_new_page_bad(struct page *page)
/*
* This page is about to be returned from the page allocator
*/
static inline int check_new_page(struct page *page)
inline int check_new_page(struct page *page)
{
if (likely(page_expected_state(page,
PAGE_FLAGS_CHECK_AT_PREP|__PG_HWPOISON)))
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册