Patch "s390/kasan: handle DCSS mapping in memory holes" has been added to the 6.5-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/kasan: handle DCSS mapping in memory holes

to the 6.5-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-kasan-handle-dcss-mapping-in-memory-holes.patch
and it can be found in the queue-6.5 subdirectory.

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



commit c16d9ee3df1091dc2e0b2c920f4e99429d6b323d
Author: Vasily Gorbik <gor@xxxxxxxxxxxxx>
Date:   Thu Oct 12 11:06:21 2023 +0200

    s390/kasan: handle DCSS mapping in memory holes
    
    [ Upstream commit 327899674eef18f96644be87aa5510b7523fe4f6 ]
    
    When physical memory is defined under z/VM using DEF STOR CONFIG, there
    may be memory holes that are not hotpluggable memory. In such cases,
    DCSS mapping could be placed in one of these memory holes. Subsequently,
    attempting memory access to such DCSS mapping would result in a kasan
    failure because there is no shadow memory mapping for it.
    
    To maintain consistency with cases where DCSS mapping is positioned after
    the kernel identity mapping, which is then covered by kasan zero shadow
    mapping, handle the scenario above by populating zero shadow mapping
    for memory holes where DCSS mapping could potentially be placed.
    
    Reviewed-by: Heiko Carstens <hca@xxxxxxxxxxxxx>
    Reviewed-by: Gerald Schaefer <gerald.schaefer@xxxxxxxxxxxxx>
    Signed-off-by: Vasily Gorbik <gor@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/s390/boot/vmem.c b/arch/s390/boot/vmem.c
index c67f59db7a512..f66d642251fe8 100644
--- a/arch/s390/boot/vmem.c
+++ b/arch/s390/boot/vmem.c
@@ -57,6 +57,7 @@ static void kasan_populate_shadow(void)
 	pmd_t pmd_z = __pmd(__pa(kasan_early_shadow_pte) | _SEGMENT_ENTRY);
 	pud_t pud_z = __pud(__pa(kasan_early_shadow_pmd) | _REGION3_ENTRY);
 	p4d_t p4d_z = __p4d(__pa(kasan_early_shadow_pud) | _REGION2_ENTRY);
+	unsigned long memgap_start = 0;
 	unsigned long untracked_end;
 	unsigned long start, end;
 	int i;
@@ -101,8 +102,12 @@ static void kasan_populate_shadow(void)
 	 * +- shadow end ----+---------+- shadow end ---+
 	 */
 
-	for_each_physmem_usable_range(i, &start, &end)
+	for_each_physmem_usable_range(i, &start, &end) {
 		kasan_populate(start, end, POPULATE_KASAN_MAP_SHADOW);
+		if (memgap_start && physmem_info.info_source == MEM_DETECT_DIAG260)
+			kasan_populate(memgap_start, start, POPULATE_KASAN_ZERO_SHADOW);
+		memgap_start = end;
+	}
 	if (IS_ENABLED(CONFIG_KASAN_VMALLOC)) {
 		untracked_end = VMALLOC_START;
 		/* shallowly populate kasan shadow for vmalloc and modules */



[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