diff options
-rw-r--r-- | arch/ia64/mm/init.c | 7 | ||||
-rw-r--r-- | arch/mips/mm/init.c | 7 | ||||
-rw-r--r-- | arch/powerpc/mm/init_32.c | 4 | ||||
-rw-r--r-- | arch/powerpc/mm/init_64.c | 5 | ||||
-rw-r--r-- | arch/sh/mm/init.c | 4 | ||||
-rw-r--r-- | arch/x86/mm/init_32.c | 4 | ||||
-rw-r--r-- | arch/x86/mm/init_64.c | 11 | ||||
-rw-r--r-- | fs/proc/kcore.c | 3 | ||||
-rw-r--r-- | include/linux/proc_fs.h | 13 |
9 files changed, 36 insertions, 22 deletions
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c index 1d286244a562..f6a3c21a2826 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c | |||
@@ -639,9 +639,10 @@ mem_init (void) | |||
639 | 639 | ||
640 | high_memory = __va(max_low_pfn * PAGE_SIZE); | 640 | high_memory = __va(max_low_pfn * PAGE_SIZE); |
641 | 641 | ||
642 | kclist_add(&kcore_mem, __va(0), max_low_pfn * PAGE_SIZE); | 642 | kclist_add(&kcore_mem, __va(0), max_low_pfn * PAGE_SIZE, KCORE_RAM); |
643 | kclist_add(&kcore_vmem, (void *)VMALLOC_START, VMALLOC_END-VMALLOC_START); | 643 | kclist_add(&kcore_vmem, (void *)VMALLOC_START, |
644 | kclist_add(&kcore_kernel, _stext, _end - _stext); | 644 | VMALLOC_END-VMALLOC_START, KCORE_VMALLOC); |
645 | kclist_add(&kcore_kernel, _stext, _end - _stext, KCORE_TEXT); | ||
645 | 646 | ||
646 | for_each_online_pgdat(pgdat) | 647 | for_each_online_pgdat(pgdat) |
647 | if (pgdat->bdata->node_bootmem_map) | 648 | if (pgdat->bdata->node_bootmem_map) |
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c index 1f4ee4797a6e..f8661985bff6 100644 --- a/arch/mips/mm/init.c +++ b/arch/mips/mm/init.c | |||
@@ -409,11 +409,12 @@ void __init mem_init(void) | |||
409 | if ((unsigned long) &_text > (unsigned long) CKSEG0) | 409 | if ((unsigned long) &_text > (unsigned long) CKSEG0) |
410 | /* The -4 is a hack so that user tools don't have to handle | 410 | /* The -4 is a hack so that user tools don't have to handle |
411 | the overflow. */ | 411 | the overflow. */ |
412 | kclist_add(&kcore_kseg0, (void *) CKSEG0, 0x80000000 - 4); | 412 | kclist_add(&kcore_kseg0, (void *) CKSEG0, |
413 | 0x80000000 - 4, KCORE_TEXT); | ||
413 | #endif | 414 | #endif |
414 | kclist_add(&kcore_mem, __va(0), max_low_pfn << PAGE_SHIFT); | 415 | kclist_add(&kcore_mem, __va(0), max_low_pfn << PAGE_SHIFT, KCORE_RAM); |
415 | kclist_add(&kcore_vmalloc, (void *)VMALLOC_START, | 416 | kclist_add(&kcore_vmalloc, (void *)VMALLOC_START, |
416 | VMALLOC_END-VMALLOC_START); | 417 | VMALLOC_END-VMALLOC_START, KCORE_VMALLOC); |
417 | 418 | ||
418 | printk(KERN_INFO "Memory: %luk/%luk available (%ldk kernel code, " | 419 | printk(KERN_INFO "Memory: %luk/%luk available (%ldk kernel code, " |
419 | "%ldk reserved, %ldk data, %ldk init, %ldk highmem)\n", | 420 | "%ldk reserved, %ldk data, %ldk init, %ldk highmem)\n", |
diff --git a/arch/powerpc/mm/init_32.c b/arch/powerpc/mm/init_32.c index 3ef5084b90ca..e91add90ec54 100644 --- a/arch/powerpc/mm/init_32.c +++ b/arch/powerpc/mm/init_32.c | |||
@@ -268,11 +268,11 @@ static int __init setup_kcore(void) | |||
268 | size); | 268 | size); |
269 | } | 269 | } |
270 | 270 | ||
271 | kclist_add(kcore_mem, __va(base), size); | 271 | kclist_add(kcore_mem, __va(base), size, KCORE_RAM); |
272 | } | 272 | } |
273 | 273 | ||
274 | kclist_add(&kcore_vmem, (void *)VMALLOC_START, | 274 | kclist_add(&kcore_vmem, (void *)VMALLOC_START, |
275 | VMALLOC_END-VMALLOC_START); | 275 | VMALLOC_END-VMALLOC_START, KCORE_VMALLOC); |
276 | 276 | ||
277 | return 0; | 277 | return 0; |
278 | } | 278 | } |
diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c index 31582329cd67..9ee563101b56 100644 --- a/arch/powerpc/mm/init_64.c +++ b/arch/powerpc/mm/init_64.c | |||
@@ -128,10 +128,11 @@ static int __init setup_kcore(void) | |||
128 | if (!kcore_mem) | 128 | if (!kcore_mem) |
129 | panic("%s: kmalloc failed\n", __func__); | 129 | panic("%s: kmalloc failed\n", __func__); |
130 | 130 | ||
131 | kclist_add(kcore_mem, __va(base), size); | 131 | kclist_add(kcore_mem, __va(base), size, KCORE_RAM); |
132 | } | 132 | } |
133 | 133 | ||
134 | kclist_add(&kcore_vmem, (void *)VMALLOC_START, VMALLOC_END-VMALLOC_START); | 134 | kclist_add(&kcore_vmem, (void *)VMALLOC_START, |
135 | VMALLOC_END-VMALLOC_START, KCORE_VMALLOC); | ||
135 | 136 | ||
136 | return 0; | 137 | return 0; |
137 | } | 138 | } |
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c index fabb7c6f48d2..ef56c9f9d7ba 100644 --- a/arch/sh/mm/init.c +++ b/arch/sh/mm/init.c | |||
@@ -226,9 +226,9 @@ void __init mem_init(void) | |||
226 | datasize = (unsigned long) &_edata - (unsigned long) &_etext; | 226 | datasize = (unsigned long) &_edata - (unsigned long) &_etext; |
227 | initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; | 227 | initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; |
228 | 228 | ||
229 | kclist_add(&kcore_mem, __va(0), max_low_pfn << PAGE_SHIFT); | 229 | kclist_add(&kcore_mem, __va(0), max_low_pfn << PAGE_SHIFT, KCORE_RAM); |
230 | kclist_add(&kcore_vmalloc, (void *)VMALLOC_START, | 230 | kclist_add(&kcore_vmalloc, (void *)VMALLOC_START, |
231 | VMALLOC_END - VMALLOC_START); | 231 | VMALLOC_END - VMALLOC_START, KCORE_VMALLOC); |
232 | 232 | ||
233 | printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, " | 233 | printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, " |
234 | "%dk data, %dk init)\n", | 234 | "%dk data, %dk init)\n", |
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c index b49b4f67453d..2cbc40112932 100644 --- a/arch/x86/mm/init_32.c +++ b/arch/x86/mm/init_32.c | |||
@@ -886,9 +886,9 @@ void __init mem_init(void) | |||
886 | datasize = (unsigned long) &_edata - (unsigned long) &_etext; | 886 | datasize = (unsigned long) &_edata - (unsigned long) &_etext; |
887 | initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; | 887 | initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; |
888 | 888 | ||
889 | kclist_add(&kcore_mem, __va(0), max_low_pfn << PAGE_SHIFT); | 889 | kclist_add(&kcore_mem, __va(0), max_low_pfn << PAGE_SHIFT, KCORE_RAM); |
890 | kclist_add(&kcore_vmalloc, (void *)VMALLOC_START, | 890 | kclist_add(&kcore_vmalloc, (void *)VMALLOC_START, |
891 | VMALLOC_END-VMALLOC_START); | 891 | VMALLOC_END-VMALLOC_START, KCORE_VMALLOC); |
892 | 892 | ||
893 | printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, " | 893 | printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, " |
894 | "%dk reserved, %dk data, %dk init, %ldk highmem)\n", | 894 | "%dk reserved, %dk data, %dk init, %ldk highmem)\n", |
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 810bd31e7f5f..c05810b614fe 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c | |||
@@ -677,13 +677,14 @@ void __init mem_init(void) | |||
677 | initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; | 677 | initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; |
678 | 678 | ||
679 | /* Register memory areas for /proc/kcore */ | 679 | /* Register memory areas for /proc/kcore */ |
680 | kclist_add(&kcore_mem, __va(0), max_low_pfn << PAGE_SHIFT); | 680 | kclist_add(&kcore_mem, __va(0), max_low_pfn << PAGE_SHIFT, KCORE_RAM); |
681 | kclist_add(&kcore_vmalloc, (void *)VMALLOC_START, | 681 | kclist_add(&kcore_vmalloc, (void *)VMALLOC_START, |
682 | VMALLOC_END-VMALLOC_START); | 682 | VMALLOC_END-VMALLOC_START, KCORE_VMALLOC); |
683 | kclist_add(&kcore_kernel, &_stext, _end - _stext); | 683 | kclist_add(&kcore_kernel, &_stext, _end - _stext, KCORE_TEXT); |
684 | kclist_add(&kcore_modules, (void *)MODULES_VADDR, MODULES_LEN); | 684 | kclist_add(&kcore_modules, (void *)MODULES_VADDR, MODULES_LEN, |
685 | KCORE_OTHER); | ||
685 | kclist_add(&kcore_vsyscall, (void *)VSYSCALL_START, | 686 | kclist_add(&kcore_vsyscall, (void *)VSYSCALL_START, |
686 | VSYSCALL_END - VSYSCALL_START); | 687 | VSYSCALL_END - VSYSCALL_START, KCORE_OTHER); |
687 | 688 | ||
688 | printk(KERN_INFO "Memory: %luk/%luk available (%ldk kernel code, " | 689 | printk(KERN_INFO "Memory: %luk/%luk available (%ldk kernel code, " |
689 | "%ldk absent, %ldk reserved, %ldk data, %ldk init)\n", | 690 | "%ldk absent, %ldk reserved, %ldk data, %ldk init)\n", |
diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c index f9327e51ce99..659c1635db81 100644 --- a/fs/proc/kcore.c +++ b/fs/proc/kcore.c | |||
@@ -62,10 +62,11 @@ static LIST_HEAD(kclist_head); | |||
62 | static DEFINE_RWLOCK(kclist_lock); | 62 | static DEFINE_RWLOCK(kclist_lock); |
63 | 63 | ||
64 | void | 64 | void |
65 | kclist_add(struct kcore_list *new, void *addr, size_t size) | 65 | kclist_add(struct kcore_list *new, void *addr, size_t size, int type) |
66 | { | 66 | { |
67 | new->addr = (unsigned long)addr; | 67 | new->addr = (unsigned long)addr; |
68 | new->size = size; | 68 | new->size = size; |
69 | new->type = type; | ||
69 | 70 | ||
70 | write_lock(&kclist_lock); | 71 | write_lock(&kclist_lock); |
71 | list_add_tail(&new->list, &kclist_head); | 72 | list_add_tail(&new->list, &kclist_head); |
diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h index 0aff2a62eba9..bd7b840765a0 100644 --- a/include/linux/proc_fs.h +++ b/include/linux/proc_fs.h | |||
@@ -78,10 +78,18 @@ struct proc_dir_entry { | |||
78 | struct list_head pde_openers; /* who did ->open, but not ->release */ | 78 | struct list_head pde_openers; /* who did ->open, but not ->release */ |
79 | }; | 79 | }; |
80 | 80 | ||
81 | enum kcore_type { | ||
82 | KCORE_TEXT, | ||
83 | KCORE_VMALLOC, | ||
84 | KCORE_RAM, | ||
85 | KCORE_OTHER, | ||
86 | }; | ||
87 | |||
81 | struct kcore_list { | 88 | struct kcore_list { |
82 | struct list_head list; | 89 | struct list_head list; |
83 | unsigned long addr; | 90 | unsigned long addr; |
84 | size_t size; | 91 | size_t size; |
92 | int type; | ||
85 | }; | 93 | }; |
86 | 94 | ||
87 | struct vmcore { | 95 | struct vmcore { |
@@ -233,11 +241,12 @@ static inline void dup_mm_exe_file(struct mm_struct *oldmm, | |||
233 | #endif /* CONFIG_PROC_FS */ | 241 | #endif /* CONFIG_PROC_FS */ |
234 | 242 | ||
235 | #if !defined(CONFIG_PROC_KCORE) | 243 | #if !defined(CONFIG_PROC_KCORE) |
236 | static inline void kclist_add(struct kcore_list *new, void *addr, size_t size) | 244 | static inline void |
245 | kclist_add(struct kcore_list *new, void *addr, size_t size, int type) | ||
237 | { | 246 | { |
238 | } | 247 | } |
239 | #else | 248 | #else |
240 | extern void kclist_add(struct kcore_list *, void *, size_t); | 249 | extern void kclist_add(struct kcore_list *, void *, size_t, int type); |
241 | #endif | 250 | #endif |
242 | 251 | ||
243 | union proc_op { | 252 | union proc_op { |