--- /dev/null
+From cc00550b2ae7ab1c7c56669fc004a13d880aaf0a Mon Sep 17 00:00:00 2001
+From: Vasily Gorbik <gor@linux.ibm.com>
+Date: Fri, 29 Nov 2024 01:07:01 +0100
+Subject: Revert "s390/mm: Allow large pages for KASAN shadow mapping"
+
+From: Vasily Gorbik <gor@linux.ibm.com>
+
+commit cc00550b2ae7ab1c7c56669fc004a13d880aaf0a upstream.
+
+This reverts commit ff123eb7741638d55abf82fac090bb3a543c1e74.
+
+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 d8073dc6bc04 ("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: ff123eb77416 ("s390/mm: Allow large pages for KASAN shadow mapping")
+Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
+Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/s390/boot/vmem.c | 12 +-----------
+ 1 file changed, 1 insertion(+), 11 deletions(-)
+
+--- a/arch/s390/boot/vmem.c
++++ b/arch/s390/boot/vmem.c
+@@ -264,17 +264,7 @@ static unsigned long _pa(unsigned long a
+
+ 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,