Skip to content

Commit

Permalink
s390/mm: Add NULL pointer check to crst_table_free() base_crst_free()
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
hcahca authored and gregkh committed Jul 18, 2024
1 parent 9339641 commit 794fa52
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions arch/s390/mm/pgalloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,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));
}

Expand Down Expand Up @@ -500,6 +502,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));
}

Expand Down

0 comments on commit 794fa52

Please sign in to comment.