|
26 | 26 | #include <asm/ptdump.h>
|
27 | 27 |
|
28 | 28 |
|
29 |
| -enum address_markers_idx { |
30 |
| - PAGE_OFFSET_NR = 0, |
31 |
| - PAGE_END_NR, |
32 |
| -#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS) |
33 |
| - KASAN_START_NR, |
34 |
| -#endif |
35 |
| -}; |
36 |
| - |
37 |
| -static struct addr_marker address_markers[] = { |
38 |
| - { PAGE_OFFSET, "Linear Mapping start" }, |
39 |
| - { 0 /* PAGE_END */, "Linear Mapping end" }, |
40 |
| -#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS) |
41 |
| - { 0 /* KASAN_SHADOW_START */, "Kasan shadow start" }, |
42 |
| - { KASAN_SHADOW_END, "Kasan shadow end" }, |
43 |
| -#endif |
44 |
| - { MODULES_VADDR, "Modules start" }, |
45 |
| - { MODULES_END, "Modules end" }, |
46 |
| - { VMALLOC_START, "vmalloc() area" }, |
47 |
| - { VMALLOC_END, "vmalloc() end" }, |
48 |
| - { VMEMMAP_START, "vmemmap start" }, |
49 |
| - { VMEMMAP_END, "vmemmap end" }, |
50 |
| - { PCI_IO_START, "PCI I/O start" }, |
51 |
| - { PCI_IO_END, "PCI I/O end" }, |
52 |
| - { FIXADDR_TOT_START, "Fixmap start" }, |
53 |
| - { FIXADDR_TOP, "Fixmap end" }, |
54 |
| - { -1, NULL }, |
55 |
| -}; |
56 |
| - |
57 | 29 | #define pt_dump_seq_printf(m, fmt, args...) \
|
58 | 30 | ({ \
|
59 | 31 | if (m) \
|
@@ -339,9 +311,8 @@ static void __init ptdump_initialize(void)
|
339 | 311 | pg_level[i].mask |= pg_level[i].bits[j].mask;
|
340 | 312 | }
|
341 | 313 |
|
342 |
| -static struct ptdump_info kernel_ptdump_info = { |
| 314 | +static struct ptdump_info kernel_ptdump_info __ro_after_init = { |
343 | 315 | .mm = &init_mm,
|
344 |
| - .markers = address_markers, |
345 | 316 | .base_addr = PAGE_OFFSET,
|
346 | 317 | };
|
347 | 318 |
|
@@ -375,10 +346,29 @@ void ptdump_check_wx(void)
|
375 | 346 |
|
376 | 347 | static int __init ptdump_init(void)
|
377 | 348 | {
|
378 |
| - address_markers[PAGE_END_NR].start_address = PAGE_END; |
| 349 | + struct addr_marker m[] = { |
| 350 | + { PAGE_OFFSET, "Linear Mapping start" }, |
| 351 | + { PAGE_END, "Linear Mapping end" }, |
379 | 352 | #if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)
|
380 |
| - address_markers[KASAN_START_NR].start_address = KASAN_SHADOW_START; |
| 353 | + { KASAN_SHADOW_START, "Kasan shadow start" }, |
| 354 | + { KASAN_SHADOW_END, "Kasan shadow end" }, |
381 | 355 | #endif
|
| 356 | + { MODULES_VADDR, "Modules start" }, |
| 357 | + { MODULES_END, "Modules end" }, |
| 358 | + { VMALLOC_START, "vmalloc() area" }, |
| 359 | + { VMALLOC_END, "vmalloc() end" }, |
| 360 | + { VMEMMAP_START, "vmemmap start" }, |
| 361 | + { VMEMMAP_END, "vmemmap end" }, |
| 362 | + { PCI_IO_START, "PCI I/O start" }, |
| 363 | + { PCI_IO_END, "PCI I/O end" }, |
| 364 | + { FIXADDR_TOT_START, "Fixmap start" }, |
| 365 | + { FIXADDR_TOP, "Fixmap end" }, |
| 366 | + { -1, NULL }, |
| 367 | + }; |
| 368 | + static struct addr_marker address_markers[ARRAY_SIZE(m)] __ro_after_init; |
| 369 | + |
| 370 | + kernel_ptdump_info.markers = memcpy(address_markers, m, sizeof(m)); |
| 371 | + |
382 | 372 | ptdump_initialize();
|
383 | 373 | ptdump_debugfs_register(&kernel_ptdump_info, "kernel_page_tables");
|
384 | 374 | return 0;
|
|
0 commit comments