Commit b5efb63a authored by Heiko Carstens's avatar Heiko Carstens Committed by Linus Torvalds

s390/mm: Add NULL pointer check to crst_table_free() base_crst_free()

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: default avatarYunseong Kim <yskelg@gmail.com>
Fixes: 6326c26c ("s390: convert various pgalloc functions to use ptdescs")
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Acked-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
Cc: stable@kernel.org
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 4376e966
...@@ -55,6 +55,8 @@ unsigned long *crst_table_alloc(struct mm_struct *mm) ...@@ -55,6 +55,8 @@ unsigned long *crst_table_alloc(struct mm_struct *mm)
void crst_table_free(struct mm_struct *mm, unsigned long *table) void crst_table_free(struct mm_struct *mm, unsigned long *table)
{ {
if (!table)
return;
pagetable_free(virt_to_ptdesc(table)); pagetable_free(virt_to_ptdesc(table));
} }
...@@ -262,6 +264,8 @@ static unsigned long *base_crst_alloc(unsigned long val) ...@@ -262,6 +264,8 @@ static unsigned long *base_crst_alloc(unsigned long val)
static void base_crst_free(unsigned long *table) static void base_crst_free(unsigned long *table)
{ {
if (!table)
return;
pagetable_free(virt_to_ptdesc(table)); pagetable_free(virt_to_ptdesc(table));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment