Patch "s390/mm: Allow large pages for KASAN shadow mapping" has been added to the 6.12-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    s390/mm: Allow large pages for KASAN shadow mapping

to the 6.12-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     s390-mm-allow-large-pages-for-kasan-shadow-mapping.patch
and it can be found in the queue-6.12 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit f4b3a3ad7f307e227e1dab54b6ad0065af98c7c7
Author: Vasily Gorbik <gor@xxxxxxxxxxxxx>
Date:   Fri Nov 22 13:41:33 2024 +0100

    s390/mm: Allow large pages for KASAN shadow mapping
    
    [ Upstream commit ff123eb7741638d55abf82fac090bb3a543c1e74 ]
    
    Commit c98d2ecae08f ("s390/mm: Uncouple physical vs virtual address
    spaces") introduced a large_allowed() helper that restricts which mapping
    modes can use large pages. This change unintentionally prevented KASAN
    shadow mappings from using large pages, despite there being no reason
    to avoid them. In fact, large pages are preferred for performance.
    
    Add POPULATE_KASAN_MAP_SHADOW to the allowed list in large_allowed()
    to restore large page mappings for KASAN shadows.
    
    While large_allowed() isn't strictly necessary with current mapping
    modes since disallowed modes either don't map anything or fail alignment
    and size checks, keep it for clarity.
    
    Fixes: c98d2ecae08f ("s390/mm: Uncouple physical vs virtual address spaces")
    Acked-by: Alexander Gordeev <agordeev@xxxxxxxxxxxxx>
    Signed-off-by: Vasily Gorbik <gor@xxxxxxxxxxxxx>
    Signed-off-by: Heiko Carstens <hca@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/s390/boot/vmem.c b/arch/s390/boot/vmem.c
index 3fa28db2fe59f..824690427b61a 100644
--- a/arch/s390/boot/vmem.c
+++ b/arch/s390/boot/vmem.c
@@ -264,7 +264,17 @@ static unsigned long _pa(unsigned long addr, unsigned long size, enum populate_m
 
 static bool large_allowed(enum populate_mode mode)
 {
-	return (mode == POPULATE_DIRECT) || (mode == POPULATE_IDENTITY) || (mode == POPULATE_KERNEL);
+	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;
+	}
 }
 
 static bool can_large_pud(pud_t *pu_dir, unsigned long addr, unsigned long end,




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux