]> www.infradead.org Git - users/hch/xfs.git/commitdiff
s390/mm: Add NULL pointer check to crst_table_free() base_crst_free()
authorHeiko Carstens <hca@linux.ibm.com>
Tue, 9 Jul 2024 06:50:56 +0000 (08:50 +0200)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 9 Jul 2024 14:38:39 +0000 (07:38 -0700)
crst_table_free() used to work with NULL pointers before the conversion
to ptdescs.  Since crst_table_free() can be called with a NULL pointer
(error handling in crst_table_upgrade() add an explicit check.

Also add the same check to base_crst_free() for consistency reasons.

In real life this should not happen, since order two GFP_KERNEL
allocations will not fail, unless FAIL_PAGE_ALLOC is enabled and used.

Reported-by: Yunseong Kim <yskelg@gmail.com>
Fixes: 6326c26c1514 ("s390: convert various pgalloc functions to use ptdescs")
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Acked-by: Alexander Gordeev <agordeev@linux.ibm.com>
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/s390/mm/pgalloc.c

index abb629d7e1319169e47327565b77eb9738cbd27a..7e3e767ab87d6cf315f08c70910ec90dcbe93f3a 100644 (file)
@@ -55,6 +55,8 @@ unsigned long *crst_table_alloc(struct mm_struct *mm)
 
 void crst_table_free(struct mm_struct *mm, unsigned long *table)
 {
+       if (!table)
+               return;
        pagetable_free(virt_to_ptdesc(table));
 }
 
@@ -262,6 +264,8 @@ static unsigned long *base_crst_alloc(unsigned long val)
 
 static void base_crst_free(unsigned long *table)
 {
+       if (!table)
+               return;
        pagetable_free(virt_to_ptdesc(table));
 }