Commit cc00550b authored by Vasily Gorbik's avatar Vasily Gorbik Committed by Heiko Carstens
Browse files

Revert "s390/mm: Allow large pages for KASAN shadow mapping"



This reverts commit ff123eb7.

Allowing large pages for KASAN shadow mappings isn't inherently wrong,
but adding POPULATE_KASAN_MAP_SHADOW to large_allowed() exposes an issue
in can_large_pud() and can_large_pmd().

Since commit d8073dc6 ("s390/mm: Allow large pages only for aligned
physical addresses"), both can_large_pud() and can_large_pmd() call _pa()
to check if large page physical addresses are aligned. However, _pa()
has a side effect: it allocates memory in POPULATE_KASAN_MAP_SHADOW
mode. This results in massive memory leaks.

The proper fix would be to address both large_allowed() and _pa()'s side
effects, but for now, revert this change to avoid the leaks.

Fixes: ff123eb7 ("s390/mm: Allow large pages for KASAN shadow mapping")
Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
parent 889221c4
Loading
Loading
Loading
Loading
+1 −11
Original line number Diff line number Diff line
@@ -264,17 +264,7 @@ static unsigned long _pa(unsigned long addr, unsigned long size, enum populate_m

static bool large_allowed(enum populate_mode mode)
{
	switch (mode) {
	case POPULATE_DIRECT:
	case POPULATE_IDENTITY:
	case POPULATE_KERNEL:
#ifdef CONFIG_KASAN
	case POPULATE_KASAN_MAP_SHADOW:
#endif
		return true;
	default:
		return false;
	}
	return (mode == POPULATE_DIRECT) || (mode == POPULATE_IDENTITY) || (mode == POPULATE_KERNEL);
}

static bool can_large_pud(pud_t *pu_dir, unsigned long addr, unsigned long end,