Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Kirill A. Shutemov and committed by
Linus Torvalds
e89cfa58 4f804943

+9 -2
+9 -2
arch/s390/mm/pgtable.c
··· 772 772 __free_page(page); 773 773 return NULL; 774 774 } 775 - pgtable_page_ctor(page); 775 + if (!pgtable_page_ctor(page)) { 776 + kfree(mp); 777 + __free_page(page); 778 + return NULL; 779 + } 776 780 mp->vmaddr = vmaddr & PMD_MASK; 777 781 INIT_LIST_HEAD(&mp->mapper); 778 782 page->index = (unsigned long) mp; ··· 906 902 page = alloc_page(GFP_KERNEL|__GFP_REPEAT); 907 903 if (!page) 908 904 return NULL; 909 - pgtable_page_ctor(page); 905 + if (!pgtable_page_ctor(page)) { 906 + __free_page(page); 907 + return NULL; 908 + } 910 909 atomic_set(&page->_mapcount, 1); 911 910 table = (unsigned long *) page_to_phys(page); 912 911 clear_table(table, _PAGE_INVALID, PAGE_SIZE);