]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
s390/ptdump: Add KMSAN page markers
authorIlya Leoshkevich <iii@linux.ibm.com>
Tue, 23 Jul 2024 12:44:12 +0000 (14:44 +0200)
committerVasily Gorbik <gor@linux.ibm.com>
Tue, 23 Jul 2024 14:01:51 +0000 (16:01 +0200)
Add KMSAN vmalloc metadata areas to
/sys/kernel/debug/kernel_page_tables. Example output:

    0x000003a95fff9000-0x000003a960000000        28K PTE I
    ---[ vmalloc Area End ]---
    ---[ Kmsan vmalloc Shadow Start ]---
    0x000003a960000000-0x000003a960010000        64K PTE RW NX
    [...]
    0x000003d3dfff9000-0x000003d3e0000000        28K PTE I
    ---[ Kmsan vmalloc Shadow End ]---
    ---[ Kmsan vmalloc Origins Start ]---
    0x000003d3e0000000-0x000003d3e0010000        64K PTE RW NX
    [...]
    0x000003fe5fff9000-0x000003fe60000000        28K PTE I
    ---[ Kmsan vmalloc Origins End ]---
    ---[ Kmsan Modules Shadow Start ]---
    0x000003fe60000000-0x000003fe60001000         4K PTE RW NX
    [...]
    0x000003fe60100000-0x000003fee0000000      2047M PMD I
    ---[ Kmsan Modules Shadow End ]---
    ---[ Kmsan Modules Origins Start ]---
    0x000003fee0000000-0x000003fee0001000         4K PTE RW NX
    [...]
    0x000003fee0100000-0x000003ff60000000      2047M PMD I
    ---[ Kmsan Modules Origins End ]---
    ---[ Modules Area Start ]---
    0x000003ff60000000-0x000003ff60001000         4K PTE RO X

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Link: https://lore.kernel.org/r/20240723124441.120044-3-iii@linux.ibm.com
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/mm/dump_pagetables.c

index 45db5f47b22dd7db154f4c982192d1652cd4549a..98dab3e049de2aef9d486f288d741b47168fc829 100644 (file)
@@ -36,6 +36,16 @@ enum address_markers_idx {
        VMEMMAP_END_NR,
        VMALLOC_NR,
        VMALLOC_END_NR,
+#ifdef CONFIG_KMSAN
+       KMSAN_VMALLOC_SHADOW_START_NR,
+       KMSAN_VMALLOC_SHADOW_END_NR,
+       KMSAN_VMALLOC_ORIGIN_START_NR,
+       KMSAN_VMALLOC_ORIGIN_END_NR,
+       KMSAN_MODULES_SHADOW_START_NR,
+       KMSAN_MODULES_SHADOW_END_NR,
+       KMSAN_MODULES_ORIGIN_START_NR,
+       KMSAN_MODULES_ORIGIN_END_NR,
+#endif
        MODULES_NR,
        MODULES_END_NR,
        ABS_LOWCORE_NR,
@@ -65,6 +75,16 @@ static struct addr_marker address_markers[] = {
        [VMEMMAP_END_NR]        = {0, "vmemmap Area End"},
        [VMALLOC_NR]            = {0, "vmalloc Area Start"},
        [VMALLOC_END_NR]        = {0, "vmalloc Area End"},
+#ifdef CONFIG_KMSAN
+       [KMSAN_VMALLOC_SHADOW_START_NR] = {0, "Kmsan vmalloc Shadow Start"},
+       [KMSAN_VMALLOC_SHADOW_END_NR]   = {0, "Kmsan vmalloc Shadow End"},
+       [KMSAN_VMALLOC_ORIGIN_START_NR] = {0, "Kmsan vmalloc Origins Start"},
+       [KMSAN_VMALLOC_ORIGIN_END_NR]   = {0, "Kmsan vmalloc Origins End"},
+       [KMSAN_MODULES_SHADOW_START_NR] = {0, "Kmsan Modules Shadow Start"},
+       [KMSAN_MODULES_SHADOW_END_NR]   = {0, "Kmsan Modules Shadow End"},
+       [KMSAN_MODULES_ORIGIN_START_NR] = {0, "Kmsan Modules Origins Start"},
+       [KMSAN_MODULES_ORIGIN_END_NR]   = {0, "Kmsan Modules Origins End"},
+#endif
        [MODULES_NR]            = {0, "Modules Area Start"},
        [MODULES_END_NR]        = {0, "Modules Area End"},
        [ABS_LOWCORE_NR]        = {0, "Lowcore Area Start"},
@@ -306,6 +326,16 @@ static int pt_dump_init(void)
 #ifdef CONFIG_KFENCE
        address_markers[KFENCE_START_NR].start_address = kfence_start;
        address_markers[KFENCE_END_NR].start_address = kfence_start + KFENCE_POOL_SIZE;
+#endif
+#ifdef CONFIG_KMSAN
+       address_markers[KMSAN_VMALLOC_SHADOW_START_NR].start_address = KMSAN_VMALLOC_SHADOW_START;
+       address_markers[KMSAN_VMALLOC_SHADOW_END_NR].start_address = KMSAN_VMALLOC_SHADOW_END;
+       address_markers[KMSAN_VMALLOC_ORIGIN_START_NR].start_address = KMSAN_VMALLOC_ORIGIN_START;
+       address_markers[KMSAN_VMALLOC_ORIGIN_END_NR].start_address = KMSAN_VMALLOC_ORIGIN_END;
+       address_markers[KMSAN_MODULES_SHADOW_START_NR].start_address = KMSAN_MODULES_SHADOW_START;
+       address_markers[KMSAN_MODULES_SHADOW_END_NR].start_address = KMSAN_MODULES_SHADOW_END;
+       address_markers[KMSAN_MODULES_ORIGIN_START_NR].start_address = KMSAN_MODULES_ORIGIN_START;
+       address_markers[KMSAN_MODULES_ORIGIN_END_NR].start_address = KMSAN_MODULES_ORIGIN_END;
 #endif
        sort_address_markers();
 #ifdef CONFIG_PTDUMP_DEBUGFS