diff options
author | Ilya Leoshkevich <iii@linux.ibm.com> | 2024-07-23 15:44:12 +0300 |
---|---|---|
committer | Vasily Gorbik <gor@linux.ibm.com> | 2024-07-23 17:01:51 +0300 |
commit | 19af288706b25f2213e85b8b2df140c04fd7c63d (patch) | |
tree | d55642797a01e93f61ab6a9b75728905b03fb1af | |
parent | ec25f99cc834644e6577fa11582f7691589ed8cc (diff) | |
download | linux-19af288706b25f2213e85b8b2df140c04fd7c63d.tar.xz |
s390/ptdump: Add KMSAN page markers
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>
-rw-r--r-- | arch/s390/mm/dump_pagetables.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/arch/s390/mm/dump_pagetables.c b/arch/s390/mm/dump_pagetables.c index 45db5f47b22d..98dab3e049de 100644 --- a/arch/s390/mm/dump_pagetables.c +++ b/arch/s390/mm/dump_pagetables.c @@ -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"}, @@ -307,6 +327,16 @@ static int pt_dump_init(void) 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 debugfs_create_file("kernel_page_tables", 0400, NULL, NULL, &ptdump_fops); |