Skip to content

Commit d386c4e

Browse files
hcahcasmb49
authored andcommitted
s390/mm: Add NULL pointer check to crst_table_free() base_crst_free()
BugLink: https://bugs.launchpad.net/bugs/2078289 commit b5efb63 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: 6326c26 ("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>
1 parent 1fd6e5c commit d386c4e

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

arch/s390/mm/pgalloc.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ unsigned long *crst_table_alloc(struct mm_struct *mm)
5555

5656
void crst_table_free(struct mm_struct *mm, unsigned long *table)
5757
{
58+
if (!table)
59+
return;
5860
pagetable_free(virt_to_ptdesc(table));
5961
}
6062

@@ -262,6 +264,8 @@ static unsigned long *base_crst_alloc(unsigned long val)
262264

263265
static void base_crst_free(unsigned long *table)
264266
{
267+
if (!table)
268+
return;
265269
pagetable_free(virt_to_ptdesc(table));
266270
}
267271

0 commit comments

Comments
 (0)