s390/mm: Add NULL pointer check to crst_table_free() base_crst_free()
BugLink: https://bugs.launchpad.net/bugs/2078289
commit b5efb63acf7bddaf20eacfcac654c25c446eabe8 upstream.
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: 6326c26c15 ("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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Portia Stephens <portia.stephens@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
This commit is contained in:
committed by
Stefan Bader
parent
1fd6e5cdf1
commit
d386c4ec4d
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user