1 ====================== 2 Kernel page table dump 3 ====================== 4 5 ptdump is a debugfs interface that provides a 6 kernel page tables. It offers a comprehensive 7 virtual memory layout as well as the attribute 8 various regions in a human-readable format. It 9 kernel page tables to verify permissions and m 10 page table entries and permissions helps ident 11 vulnerabilities such as mappings with overly p 12 improper memory protections. 13 14 Memory hotplug allows dynamic expansion or con 15 memory without requiring a system reboot. To m 16 and integrity of the memory management data st 17 of the ``mem_hotplug_lock`` semaphore in write 18 read mode, ``mem_hotplug_lock`` supports an ef 19 ``get_online_mems()`` and ``put_online_mems()` 20 offlining of memory being accessed by the ptdu 21 22 In order to dump the kernel page tables, enabl 23 configurations and mount debugfs:: 24 25 CONFIG_GENERIC_PTDUMP=y 26 CONFIG_PTDUMP_CORE=y 27 CONFIG_PTDUMP_DEBUGFS=y 28 29 mount -t debugfs nodev /sys/kernel/debug 30 cat /sys/kernel/debug/kernel_page_tables 31 32 On analysing the output of ``cat /sys/kernel/d 33 one can derive information about the virtual a 34 followed by size of the memory region covered 35 hierarchical structure of the page tables and 36 associated with each page. The page attributes 37 access permissions, execution capability, type 38 level PTE or block level PGD, PMD and PUD, and 39 within the kernel memory. Assessing these attr 40 understanding the memory layout, access patter 41 characteristics of the kernel pages. 42 43 Kernel virtual memory layout example:: 44 45 start address end address size 46 +-------------------------------------------- 47 | ---[ Linear Mapping start ]---------------- 48 | .................. 49 | 0xfff0000000000000-0xfff0000000210000 2112 50 | 0xfff0000000210000-0xfff0000001c00000 26560 51 | .................. 52 | ---[ Linear Mapping end ]------------------ 53 +-------------------------------------------- 54 | ---[ Modules start ]----------------------- 55 | .................. 56 | 0xffff800000000000-0xffff800008000000 128 57 | .................. 58 | ---[ Modules end ]------------------------- 59 +-------------------------------------------- 60 | ---[ vmalloc() area ]---------------------- 61 | .................. 62 | 0xffff800008010000-0xffff800008200000 1984 63 | 0xffff800008200000-0xffff800008e00000 12 64 | .................. 65 | ---[ vmalloc() end ]----------------------- 66 +-------------------------------------------- 67 | ---[ Fixmap start ]------------------------ 68 | .................. 69 | 0xfffffbfffdb80000-0xfffffbfffdb90000 64 70 | 0xfffffbfffdb90000-0xfffffbfffdba0000 64 71 | .................. 72 | ---[ Fixmap end ]-------------------------- 73 +-------------------------------------------- 74 | ---[ PCI I/O start ]----------------------- 75 | .................. 76 | 0xfffffbfffe800000-0xfffffbffff800000 16 77 | .................. 78 | ---[ PCI I/O end ]------------------------- 79 +-------------------------------------------- 80 | ---[ vmemmap start ]----------------------- 81 | .................. 82 | 0xfffffc0002000000-0xfffffc0002200000 2 83 | 0xfffffc0002200000-0xfffffc0020000000 478 84 | .................. 85 | ---[ vmemmap end ]------------------------- 86 +-------------------------------------------- 87 88 ``cat /sys/kernel/debug/kernel_page_tables`` o 89 90 0xfff0000001c00000-0xfff0000080000000 202 91 0xfff0000080000000-0xfff0000800000000 3 92 0xfff0000800000000-0xfff0000800700000 93 0xfff0000800700000-0xfff0000800710000 6 94 0xfff0000800710000-0xfff0000880000000 208992 95 0xfff0000880000000-0xfff0040000000000 406 96 0xfff0040000000000-0xffff800000000000 396
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.