s390: handle pgtable_page_ctor() fail
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Heiko Carstens <heiko.carstens@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
4f804943f9
commit
e89cfa58a8
1 changed files with 9 additions and 2 deletions
|
@ -772,7 +772,11 @@ static inline unsigned long *page_table_alloc_pgste(struct mm_struct *mm,
|
|||
__free_page(page);
|
||||
return NULL;
|
||||
}
|
||||
pgtable_page_ctor(page);
|
||||
if (!pgtable_page_ctor(page)) {
|
||||
kfree(mp);
|
||||
__free_page(page);
|
||||
return NULL;
|
||||
}
|
||||
mp->vmaddr = vmaddr & PMD_MASK;
|
||||
INIT_LIST_HEAD(&mp->mapper);
|
||||
page->index = (unsigned long) mp;
|
||||
|
@ -902,7 +906,10 @@ unsigned long *page_table_alloc(struct mm_struct *mm, unsigned long vmaddr)
|
|||
page = alloc_page(GFP_KERNEL|__GFP_REPEAT);
|
||||
if (!page)
|
||||
return NULL;
|
||||
pgtable_page_ctor(page);
|
||||
if (!pgtable_page_ctor(page)) {
|
||||
__free_page(page);
|
||||
return NULL;
|
||||
}
|
||||
atomic_set(&page->_mapcount, 1);
|
||||
table = (unsigned long *) page_to_phys(page);
|
||||
clear_table(table, _PAGE_INVALID, PAGE_SIZE);
|
||||
|
|
Loading…
Reference in a new issue