* [PATCH v1] kdump, vmcoreinfo: report memory sections virtual addresses
@ 2016-08-18 14:47 Thomas Garnier
2016-08-19 2:41 ` Baoquan He
2016-08-29 10:11 ` Baoquan He
0 siblings, 2 replies; 9+ messages in thread
From: Thomas Garnier @ 2016-08-18 14:47 UTC (permalink / raw)
To: Thomas Gleixner, Ingo Molnar, H . Peter Anvin, Eric Biederman,
Andrew Morton, Xunlei Pang, Thomas Garnier, HATAYAMA Daisuke
Cc: x86, linux-kernel, kexec, keescook, kernel-hardening, surovegin
KASLR memory randomization can randomize the base of the physical memory
mapping (PAGE_OFFSET), vmalloc (VMALLOC_START) and vmemmap
(VMEMMAP_START). Adding these variables on VMCOREINFO so tools can
easily identify the base of each memory section.
Signed-off-by: Thomas Garnier <thgarnie@google.com>
---
Based on next-20160817
---
arch/x86/kernel/machine_kexec_64.c | 3 +++
include/linux/kexec.h | 6 ++++++
2 files changed, 9 insertions(+)
diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
index fc3389f..b1f15a2 100644
--- a/arch/x86/kernel/machine_kexec_64.c
+++ b/arch/x86/kernel/machine_kexec_64.c
@@ -338,6 +338,9 @@ void arch_crash_save_vmcoreinfo(void)
vmcoreinfo_append_str("KERNELOFFSET=%lx\n",
kaslr_offset());
VMCOREINFO_PHYS_BASE(phys_base);
+ VMCOREINFO_PAGE_OFFSET(PAGE_OFFSET);
+ VMCOREINFO_VMALLOC_START(VMALLOC_START);
+ VMCOREINFO_VMEMMAP_START(VMEMMAP_START);
}
/* arch-dependent functionality related to kexec file-based syscall */
diff --git a/include/linux/kexec.h b/include/linux/kexec.h
index d3ae429..cd3874c 100644
--- a/include/linux/kexec.h
+++ b/include/linux/kexec.h
@@ -261,6 +261,12 @@ phys_addr_t paddr_vmcoreinfo_note(void);
vmcoreinfo_append_str("CONFIG_%s=y\n", #name)
#define VMCOREINFO_PHYS_BASE(value) \
vmcoreinfo_append_str("PHYS_BASE=%lx\n", (unsigned long)value)
+#define VMCOREINFO_PAGE_OFFSET(value) \
+ vmcoreinfo_append_str("PAGE_OFFSET=%lx\n", (unsigned long)value)
+#define VMCOREINFO_VMALLOC_START(value) \
+ vmcoreinfo_append_str("VMALLOC_START=%lx\n", (unsigned long)value)
+#define VMCOREINFO_VMEMMAP_START(value) \
+ vmcoreinfo_append_str("VMEMMAP_START=%lx\n", (unsigned long)value)
extern struct kimage *kexec_image;
extern struct kimage *kexec_crash_image;
--
2.8.0.rc3.226.g39d4020
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v1] kdump, vmcoreinfo: report memory sections virtual addresses
2016-08-18 14:47 [PATCH v1] kdump, vmcoreinfo: report memory sections virtual addresses Thomas Garnier
@ 2016-08-19 2:41 ` Baoquan He
2016-08-19 18:01 ` Kees Cook
2016-08-29 10:11 ` Baoquan He
1 sibling, 1 reply; 9+ messages in thread
From: Baoquan He @ 2016-08-19 2:41 UTC (permalink / raw)
To: Thomas Garnier
Cc: Thomas Gleixner, Ingo Molnar, H . Peter Anvin, Eric Biederman,
Andrew Morton, Xunlei Pang, HATAYAMA Daisuke, keescook,
kernel-hardening, surovegin, x86, kexec, linux-kernel
This makes sense. Makedumpfile need this to parse memory sections.
Ack.
Acked-by: Baoquan He <bhe@redhat.com>
On 08/18/16 at 07:47am, Thomas Garnier wrote:
> KASLR memory randomization can randomize the base of the physical memory
> mapping (PAGE_OFFSET), vmalloc (VMALLOC_START) and vmemmap
> (VMEMMAP_START). Adding these variables on VMCOREINFO so tools can
> easily identify the base of each memory section.
>
> Signed-off-by: Thomas Garnier <thgarnie@google.com>
> ---
> Based on next-20160817
> ---
> arch/x86/kernel/machine_kexec_64.c | 3 +++
> include/linux/kexec.h | 6 ++++++
> 2 files changed, 9 insertions(+)
>
> diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
> index fc3389f..b1f15a2 100644
> --- a/arch/x86/kernel/machine_kexec_64.c
> +++ b/arch/x86/kernel/machine_kexec_64.c
> @@ -338,6 +338,9 @@ void arch_crash_save_vmcoreinfo(void)
> vmcoreinfo_append_str("KERNELOFFSET=%lx\n",
> kaslr_offset());
> VMCOREINFO_PHYS_BASE(phys_base);
> + VMCOREINFO_PAGE_OFFSET(PAGE_OFFSET);
> + VMCOREINFO_VMALLOC_START(VMALLOC_START);
> + VMCOREINFO_VMEMMAP_START(VMEMMAP_START);
> }
>
> /* arch-dependent functionality related to kexec file-based syscall */
> diff --git a/include/linux/kexec.h b/include/linux/kexec.h
> index d3ae429..cd3874c 100644
> --- a/include/linux/kexec.h
> +++ b/include/linux/kexec.h
> @@ -261,6 +261,12 @@ phys_addr_t paddr_vmcoreinfo_note(void);
> vmcoreinfo_append_str("CONFIG_%s=y\n", #name)
> #define VMCOREINFO_PHYS_BASE(value) \
> vmcoreinfo_append_str("PHYS_BASE=%lx\n", (unsigned long)value)
Could it be better to define only one MACRO like VMCOREINFO_
> +#define VMCOREINFO_PAGE_OFFSET(value) \
> + vmcoreinfo_append_str("PAGE_OFFSET=%lx\n", (unsigned long)value)
> +#define VMCOREINFO_VMALLOC_START(value) \
> + vmcoreinfo_append_str("VMALLOC_START=%lx\n", (unsigned long)value)
> +#define VMCOREINFO_VMEMMAP_START(value) \
> + vmcoreinfo_append_str("VMEMMAP_START=%lx\n", (unsigned long)value)
>
> extern struct kimage *kexec_image;
> extern struct kimage *kexec_crash_image;
> --
> 2.8.0.rc3.226.g39d4020
>
>
> _______________________________________________
> kexec mailing list
> kexec@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v1] kdump, vmcoreinfo: report memory sections virtual addresses
2016-08-19 2:41 ` Baoquan He
@ 2016-08-19 18:01 ` Kees Cook
0 siblings, 0 replies; 9+ messages in thread
From: Kees Cook @ 2016-08-19 18:01 UTC (permalink / raw)
To: Baoquan He
Cc: Thomas Garnier, Thomas Gleixner, Ingo Molnar, H . Peter Anvin,
Eric Biederman, Andrew Morton, Xunlei Pang, HATAYAMA Daisuke,
kernel-hardening, Eugene Surovegin, x86, Kexec Mailing List,
LKML
On Thu, Aug 18, 2016 at 7:41 PM, Baoquan He <bhe@redhat.com> wrote:
>
> This makes sense. Makedumpfile need this to parse memory sections.
Yup, good addition.
Acked-by: Kees Cook <keescook@chromium.org>
-Kees
>
> Ack.
>
> Acked-by: Baoquan He <bhe@redhat.com>
>
> On 08/18/16 at 07:47am, Thomas Garnier wrote:
>> KASLR memory randomization can randomize the base of the physical memory
>> mapping (PAGE_OFFSET), vmalloc (VMALLOC_START) and vmemmap
>> (VMEMMAP_START). Adding these variables on VMCOREINFO so tools can
>> easily identify the base of each memory section.
>>
>> Signed-off-by: Thomas Garnier <thgarnie@google.com>
>> ---
>> Based on next-20160817
>> ---
>> arch/x86/kernel/machine_kexec_64.c | 3 +++
>> include/linux/kexec.h | 6 ++++++
>> 2 files changed, 9 insertions(+)
>>
>> diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
>> index fc3389f..b1f15a2 100644
>> --- a/arch/x86/kernel/machine_kexec_64.c
>> +++ b/arch/x86/kernel/machine_kexec_64.c
>> @@ -338,6 +338,9 @@ void arch_crash_save_vmcoreinfo(void)
>> vmcoreinfo_append_str("KERNELOFFSET=%lx\n",
>> kaslr_offset());
>> VMCOREINFO_PHYS_BASE(phys_base);
>> + VMCOREINFO_PAGE_OFFSET(PAGE_OFFSET);
>> + VMCOREINFO_VMALLOC_START(VMALLOC_START);
>> + VMCOREINFO_VMEMMAP_START(VMEMMAP_START);
>> }
>>
>> /* arch-dependent functionality related to kexec file-based syscall */
>> diff --git a/include/linux/kexec.h b/include/linux/kexec.h
>> index d3ae429..cd3874c 100644
>> --- a/include/linux/kexec.h
>> +++ b/include/linux/kexec.h
>> @@ -261,6 +261,12 @@ phys_addr_t paddr_vmcoreinfo_note(void);
>> vmcoreinfo_append_str("CONFIG_%s=y\n", #name)
>> #define VMCOREINFO_PHYS_BASE(value) \
>> vmcoreinfo_append_str("PHYS_BASE=%lx\n", (unsigned long)value)
>
> Could it be better to define only one MACRO like VMCOREINFO_
>> +#define VMCOREINFO_PAGE_OFFSET(value) \
>> + vmcoreinfo_append_str("PAGE_OFFSET=%lx\n", (unsigned long)value)
>> +#define VMCOREINFO_VMALLOC_START(value) \
>> + vmcoreinfo_append_str("VMALLOC_START=%lx\n", (unsigned long)value)
>> +#define VMCOREINFO_VMEMMAP_START(value) \
>> + vmcoreinfo_append_str("VMEMMAP_START=%lx\n", (unsigned long)value)
>>
>> extern struct kimage *kexec_image;
>> extern struct kimage *kexec_crash_image;
>> --
>> 2.8.0.rc3.226.g39d4020
>>
>>
>> _______________________________________________
>> kexec mailing list
>> kexec@lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/kexec
--
Kees Cook
Nexus Security
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v1] kdump, vmcoreinfo: report memory sections virtual addresses
2016-08-18 14:47 [PATCH v1] kdump, vmcoreinfo: report memory sections virtual addresses Thomas Garnier
2016-08-19 2:41 ` Baoquan He
@ 2016-08-29 10:11 ` Baoquan He
2016-08-29 14:20 ` Thomas Garnier
2016-09-07 6:09 ` AKASHI Takahiro
1 sibling, 2 replies; 9+ messages in thread
From: Baoquan He @ 2016-08-29 10:11 UTC (permalink / raw)
To: Thomas Garnier
Cc: Thomas Gleixner, Ingo Molnar, H . Peter Anvin, Eric Biederman,
Andrew Morton, Xunlei Pang, HATAYAMA Daisuke, keescook,
kernel-hardening, surovegin, x86, kexec, linux-kernel
Hi Thomas,
I used below code and it works. Since using VMCOREINFO_NUMBER can reuse
the existing struct number_table to import the data. It makes change
easier. But the place could be next to KERNEL_IMAGE_SIZE, or as your
patch did, both is fine.
---
kernel/kexec_core.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c
index 5616755..81bde86 100644
--- a/kernel/kexec_core.c
+++ b/kernel/kexec_core.c
@@ -1469,6 +1469,9 @@ static int __init crash_save_vmcoreinfo_init(void)
VMCOREINFO_NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE);
#ifdef CONFIG_X86
VMCOREINFO_NUMBER(KERNEL_IMAGE_SIZE);
+ VMCOREINFO_NUMBER(PAGE_OFFSET);
+ VMCOREINFO_NUMBER(VMALLOC_START);
+ VMCOREINFO_NUMBER(VMEMMAP_START);
#endif
#ifdef CONFIG_HUGETLB_PAGE
VMCOREINFO_NUMBER(HUGETLB_PAGE_DTOR);
--
2.5.5
On 08/18/16 at 07:47am, Thomas Garnier wrote:
> KASLR memory randomization can randomize the base of the physical memory
> mapping (PAGE_OFFSET), vmalloc (VMALLOC_START) and vmemmap
> (VMEMMAP_START). Adding these variables on VMCOREINFO so tools can
> easily identify the base of each memory section.
>
> Signed-off-by: Thomas Garnier <thgarnie@google.com>
> ---
> Based on next-20160817
> ---
> arch/x86/kernel/machine_kexec_64.c | 3 +++
> include/linux/kexec.h | 6 ++++++
> 2 files changed, 9 insertions(+)
>
> diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
> index fc3389f..b1f15a2 100644
> --- a/arch/x86/kernel/machine_kexec_64.c
> +++ b/arch/x86/kernel/machine_kexec_64.c
> @@ -338,6 +338,9 @@ void arch_crash_save_vmcoreinfo(void)
> vmcoreinfo_append_str("KERNELOFFSET=%lx\n",
> kaslr_offset());
> VMCOREINFO_PHYS_BASE(phys_base);
> + VMCOREINFO_PAGE_OFFSET(PAGE_OFFSET);
> + VMCOREINFO_VMALLOC_START(VMALLOC_START);
> + VMCOREINFO_VMEMMAP_START(VMEMMAP_START);
> }
>
> /* arch-dependent functionality related to kexec file-based syscall */
> diff --git a/include/linux/kexec.h b/include/linux/kexec.h
> index d3ae429..cd3874c 100644
> --- a/include/linux/kexec.h
> +++ b/include/linux/kexec.h
> @@ -261,6 +261,12 @@ phys_addr_t paddr_vmcoreinfo_note(void);
> vmcoreinfo_append_str("CONFIG_%s=y\n", #name)
> #define VMCOREINFO_PHYS_BASE(value) \
> vmcoreinfo_append_str("PHYS_BASE=%lx\n", (unsigned long)value)
> +#define VMCOREINFO_PAGE_OFFSET(value) \
> + vmcoreinfo_append_str("PAGE_OFFSET=%lx\n", (unsigned long)value)
> +#define VMCOREINFO_VMALLOC_START(value) \
> + vmcoreinfo_append_str("VMALLOC_START=%lx\n", (unsigned long)value)
> +#define VMCOREINFO_VMEMMAP_START(value) \
> + vmcoreinfo_append_str("VMEMMAP_START=%lx\n", (unsigned long)value)
>
> extern struct kimage *kexec_image;
> extern struct kimage *kexec_crash_image;
> --
> 2.8.0.rc3.226.g39d4020
>
>
> _______________________________________________
> kexec mailing list
> kexec@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v1] kdump, vmcoreinfo: report memory sections virtual addresses
2016-08-29 10:11 ` Baoquan He
@ 2016-08-29 14:20 ` Thomas Garnier
2016-09-07 6:09 ` AKASHI Takahiro
1 sibling, 0 replies; 9+ messages in thread
From: Thomas Garnier @ 2016-08-29 14:20 UTC (permalink / raw)
To: Baoquan He
Cc: Thomas Gleixner, Ingo Molnar, H . Peter Anvin, Eric Biederman,
Andrew Morton, Xunlei Pang, HATAYAMA Daisuke, Kees Cook,
Kernel Hardening, Eugene Surovegin, the arch/x86 maintainers,
kexec, LKML
Great, thanks Baoquan.
On Mon, Aug 29, 2016 at 3:11 AM, Baoquan He <bhe@redhat.com> wrote:
> Hi Thomas,
>
> I used below code and it works. Since using VMCOREINFO_NUMBER can reuse
> the existing struct number_table to import the data. It makes change
> easier. But the place could be next to KERNEL_IMAGE_SIZE, or as your
> patch did, both is fine.
>
> ---
> kernel/kexec_core.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c
> index 5616755..81bde86 100644
> --- a/kernel/kexec_core.c
> +++ b/kernel/kexec_core.c
> @@ -1469,6 +1469,9 @@ static int __init crash_save_vmcoreinfo_init(void)
> VMCOREINFO_NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE);
> #ifdef CONFIG_X86
> VMCOREINFO_NUMBER(KERNEL_IMAGE_SIZE);
> + VMCOREINFO_NUMBER(PAGE_OFFSET);
> + VMCOREINFO_NUMBER(VMALLOC_START);
> + VMCOREINFO_NUMBER(VMEMMAP_START);
> #endif
> #ifdef CONFIG_HUGETLB_PAGE
> VMCOREINFO_NUMBER(HUGETLB_PAGE_DTOR);
> --
> 2.5.5
>
> On 08/18/16 at 07:47am, Thomas Garnier wrote:
>> KASLR memory randomization can randomize the base of the physical memory
>> mapping (PAGE_OFFSET), vmalloc (VMALLOC_START) and vmemmap
>> (VMEMMAP_START). Adding these variables on VMCOREINFO so tools can
>> easily identify the base of each memory section.
>>
>> Signed-off-by: Thomas Garnier <thgarnie@google.com>
>> ---
>> Based on next-20160817
>> ---
>> arch/x86/kernel/machine_kexec_64.c | 3 +++
>> include/linux/kexec.h | 6 ++++++
>> 2 files changed, 9 insertions(+)
>>
>> diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
>> index fc3389f..b1f15a2 100644
>> --- a/arch/x86/kernel/machine_kexec_64.c
>> +++ b/arch/x86/kernel/machine_kexec_64.c
>> @@ -338,6 +338,9 @@ void arch_crash_save_vmcoreinfo(void)
>> vmcoreinfo_append_str("KERNELOFFSET=%lx\n",
>> kaslr_offset());
>> VMCOREINFO_PHYS_BASE(phys_base);
>> + VMCOREINFO_PAGE_OFFSET(PAGE_OFFSET);
>> + VMCOREINFO_VMALLOC_START(VMALLOC_START);
>> + VMCOREINFO_VMEMMAP_START(VMEMMAP_START);
>> }
>>
>> /* arch-dependent functionality related to kexec file-based syscall */
>> diff --git a/include/linux/kexec.h b/include/linux/kexec.h
>> index d3ae429..cd3874c 100644
>> --- a/include/linux/kexec.h
>> +++ b/include/linux/kexec.h
>> @@ -261,6 +261,12 @@ phys_addr_t paddr_vmcoreinfo_note(void);
>> vmcoreinfo_append_str("CONFIG_%s=y\n", #name)
>> #define VMCOREINFO_PHYS_BASE(value) \
>> vmcoreinfo_append_str("PHYS_BASE=%lx\n", (unsigned long)value)
>> +#define VMCOREINFO_PAGE_OFFSET(value) \
>> + vmcoreinfo_append_str("PAGE_OFFSET=%lx\n", (unsigned long)value)
>> +#define VMCOREINFO_VMALLOC_START(value) \
>> + vmcoreinfo_append_str("VMALLOC_START=%lx\n", (unsigned long)value)
>> +#define VMCOREINFO_VMEMMAP_START(value) \
>> + vmcoreinfo_append_str("VMEMMAP_START=%lx\n", (unsigned long)value)
>>
>> extern struct kimage *kexec_image;
>> extern struct kimage *kexec_crash_image;
>> --
>> 2.8.0.rc3.226.g39d4020
>>
>>
>> _______________________________________________
>> kexec mailing list
>> kexec@lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/kexec
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v1] kdump, vmcoreinfo: report memory sections virtual addresses
2016-08-29 10:11 ` Baoquan He
2016-08-29 14:20 ` Thomas Garnier
@ 2016-09-07 6:09 ` AKASHI Takahiro
2016-09-07 6:17 ` Baoquan He
1 sibling, 1 reply; 9+ messages in thread
From: AKASHI Takahiro @ 2016-09-07 6:09 UTC (permalink / raw)
To: Baoquan He
Cc: Thomas Garnier, Thomas Gleixner, Ingo Molnar, H . Peter Anvin,
Eric Biederman, Andrew Morton, Xunlei Pang, HATAYAMA Daisuke,
keescook, kernel-hardening, surovegin, x86, kexec, linux-kernel
On Mon, Aug 29, 2016 at 06:11:37PM +0800, Baoquan He wrote:
> Hi Thomas,
>
> I used below code and it works. Since using VMCOREINFO_NUMBER can reuse
> the existing struct number_table to import the data. It makes change
> easier. But the place could be next to KERNEL_IMAGE_SIZE, or as your
> patch did, both is fine.
I think we'd better avoid adding arch-specific code in generic code
if possible, especially in this case, since there is a dedicated interface,
arch_crash_save_vmcoreinfo().
-Takahiro AKASHI
> ---
> kernel/kexec_core.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c
> index 5616755..81bde86 100644
> --- a/kernel/kexec_core.c
> +++ b/kernel/kexec_core.c
> @@ -1469,6 +1469,9 @@ static int __init crash_save_vmcoreinfo_init(void)
> VMCOREINFO_NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE);
> #ifdef CONFIG_X86
> VMCOREINFO_NUMBER(KERNEL_IMAGE_SIZE);
> + VMCOREINFO_NUMBER(PAGE_OFFSET);
> + VMCOREINFO_NUMBER(VMALLOC_START);
> + VMCOREINFO_NUMBER(VMEMMAP_START);
> #endif
> #ifdef CONFIG_HUGETLB_PAGE
> VMCOREINFO_NUMBER(HUGETLB_PAGE_DTOR);
> --
> 2.5.5
>
> On 08/18/16 at 07:47am, Thomas Garnier wrote:
> > KASLR memory randomization can randomize the base of the physical memory
> > mapping (PAGE_OFFSET), vmalloc (VMALLOC_START) and vmemmap
> > (VMEMMAP_START). Adding these variables on VMCOREINFO so tools can
> > easily identify the base of each memory section.
> >
> > Signed-off-by: Thomas Garnier <thgarnie@google.com>
> > ---
> > Based on next-20160817
> > ---
> > arch/x86/kernel/machine_kexec_64.c | 3 +++
> > include/linux/kexec.h | 6 ++++++
> > 2 files changed, 9 insertions(+)
> >
> > diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
> > index fc3389f..b1f15a2 100644
> > --- a/arch/x86/kernel/machine_kexec_64.c
> > +++ b/arch/x86/kernel/machine_kexec_64.c
> > @@ -338,6 +338,9 @@ void arch_crash_save_vmcoreinfo(void)
> > vmcoreinfo_append_str("KERNELOFFSET=%lx\n",
> > kaslr_offset());
> > VMCOREINFO_PHYS_BASE(phys_base);
> > + VMCOREINFO_PAGE_OFFSET(PAGE_OFFSET);
> > + VMCOREINFO_VMALLOC_START(VMALLOC_START);
> > + VMCOREINFO_VMEMMAP_START(VMEMMAP_START);
> > }
> >
> > /* arch-dependent functionality related to kexec file-based syscall */
> > diff --git a/include/linux/kexec.h b/include/linux/kexec.h
> > index d3ae429..cd3874c 100644
> > --- a/include/linux/kexec.h
> > +++ b/include/linux/kexec.h
> > @@ -261,6 +261,12 @@ phys_addr_t paddr_vmcoreinfo_note(void);
> > vmcoreinfo_append_str("CONFIG_%s=y\n", #name)
> > #define VMCOREINFO_PHYS_BASE(value) \
> > vmcoreinfo_append_str("PHYS_BASE=%lx\n", (unsigned long)value)
> > +#define VMCOREINFO_PAGE_OFFSET(value) \
> > + vmcoreinfo_append_str("PAGE_OFFSET=%lx\n", (unsigned long)value)
> > +#define VMCOREINFO_VMALLOC_START(value) \
> > + vmcoreinfo_append_str("VMALLOC_START=%lx\n", (unsigned long)value)
> > +#define VMCOREINFO_VMEMMAP_START(value) \
> > + vmcoreinfo_append_str("VMEMMAP_START=%lx\n", (unsigned long)value)
> >
> > extern struct kimage *kexec_image;
> > extern struct kimage *kexec_crash_image;
> > --
> > 2.8.0.rc3.226.g39d4020
> >
> >
> > _______________________________________________
> > kexec mailing list
> > kexec@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/kexec
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v1] kdump, vmcoreinfo: report memory sections virtual addresses
2016-09-07 6:09 ` AKASHI Takahiro
@ 2016-09-07 6:17 ` Baoquan He
2016-09-08 15:32 ` Thomas Garnier
0 siblings, 1 reply; 9+ messages in thread
From: Baoquan He @ 2016-09-07 6:17 UTC (permalink / raw)
To: AKASHI Takahiro, Thomas Garnier, Thomas Gleixner, Ingo Molnar,
H . Peter Anvin, Eric Biederman, Andrew Morton, Xunlei Pang,
HATAYAMA Daisuke, keescook, kernel-hardening, surovegin, x86,
kexec, linux-kernel
On 09/07/16 at 03:09pm, AKASHI Takahiro wrote:
> On Mon, Aug 29, 2016 at 06:11:37PM +0800, Baoquan He wrote:
> > Hi Thomas,
> >
> > I used below code and it works. Since using VMCOREINFO_NUMBER can reuse
> > the existing struct number_table to import the data. It makes change
> > easier. But the place could be next to KERNEL_IMAGE_SIZE, or as your
> > patch did, both is fine.
>
> I think we'd better avoid adding arch-specific code in generic code
> if possible, especially in this case, since there is a dedicated interface,
> arch_crash_save_vmcoreinfo().
Yes, agree. Previously the reason I put KERNEL_IMAGE_SIZE in
crash_save_vmcoreinfo_init is kernel text randomization could be a
generic method for all ARCHes. Then it can be taken out from the #ifdef
scope. Now seeing it again, it's better to be put in
arch_crash_save_vmcoreinfo, at least for the time being.
Hi Thomas,
By the way, will you repost with the VMCOREINFO_NUMBER format? If not, I
can repost after I test all kexec/makedumpfile changes.
Thanks
Baoquan
>
> -Takahiro AKASHI
>
> > ---
> > kernel/kexec_core.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c
> > index 5616755..81bde86 100644
> > --- a/kernel/kexec_core.c
> > +++ b/kernel/kexec_core.c
> > @@ -1469,6 +1469,9 @@ static int __init crash_save_vmcoreinfo_init(void)
> > VMCOREINFO_NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE);
> > #ifdef CONFIG_X86
> > VMCOREINFO_NUMBER(KERNEL_IMAGE_SIZE);
> > + VMCOREINFO_NUMBER(PAGE_OFFSET);
> > + VMCOREINFO_NUMBER(VMALLOC_START);
> > + VMCOREINFO_NUMBER(VMEMMAP_START);
> > #endif
> > #ifdef CONFIG_HUGETLB_PAGE
> > VMCOREINFO_NUMBER(HUGETLB_PAGE_DTOR);
> > --
> > 2.5.5
> >
> > On 08/18/16 at 07:47am, Thomas Garnier wrote:
> > > KASLR memory randomization can randomize the base of the physical memory
> > > mapping (PAGE_OFFSET), vmalloc (VMALLOC_START) and vmemmap
> > > (VMEMMAP_START). Adding these variables on VMCOREINFO so tools can
> > > easily identify the base of each memory section.
> > >
> > > Signed-off-by: Thomas Garnier <thgarnie@google.com>
> > > ---
> > > Based on next-20160817
> > > ---
> > > arch/x86/kernel/machine_kexec_64.c | 3 +++
> > > include/linux/kexec.h | 6 ++++++
> > > 2 files changed, 9 insertions(+)
> > >
> > > diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
> > > index fc3389f..b1f15a2 100644
> > > --- a/arch/x86/kernel/machine_kexec_64.c
> > > +++ b/arch/x86/kernel/machine_kexec_64.c
> > > @@ -338,6 +338,9 @@ void arch_crash_save_vmcoreinfo(void)
> > > vmcoreinfo_append_str("KERNELOFFSET=%lx\n",
> > > kaslr_offset());
> > > VMCOREINFO_PHYS_BASE(phys_base);
> > > + VMCOREINFO_PAGE_OFFSET(PAGE_OFFSET);
> > > + VMCOREINFO_VMALLOC_START(VMALLOC_START);
> > > + VMCOREINFO_VMEMMAP_START(VMEMMAP_START);
> > > }
> > >
> > > /* arch-dependent functionality related to kexec file-based syscall */
> > > diff --git a/include/linux/kexec.h b/include/linux/kexec.h
> > > index d3ae429..cd3874c 100644
> > > --- a/include/linux/kexec.h
> > > +++ b/include/linux/kexec.h
> > > @@ -261,6 +261,12 @@ phys_addr_t paddr_vmcoreinfo_note(void);
> > > vmcoreinfo_append_str("CONFIG_%s=y\n", #name)
> > > #define VMCOREINFO_PHYS_BASE(value) \
> > > vmcoreinfo_append_str("PHYS_BASE=%lx\n", (unsigned long)value)
> > > +#define VMCOREINFO_PAGE_OFFSET(value) \
> > > + vmcoreinfo_append_str("PAGE_OFFSET=%lx\n", (unsigned long)value)
> > > +#define VMCOREINFO_VMALLOC_START(value) \
> > > + vmcoreinfo_append_str("VMALLOC_START=%lx\n", (unsigned long)value)
> > > +#define VMCOREINFO_VMEMMAP_START(value) \
> > > + vmcoreinfo_append_str("VMEMMAP_START=%lx\n", (unsigned long)value)
> > >
> > > extern struct kimage *kexec_image;
> > > extern struct kimage *kexec_crash_image;
> > > --
> > > 2.8.0.rc3.226.g39d4020
> > >
> > >
> > > _______________________________________________
> > > kexec mailing list
> > > kexec@lists.infradead.org
> > > http://lists.infradead.org/mailman/listinfo/kexec
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v1] kdump, vmcoreinfo: report memory sections virtual addresses
2016-09-07 6:17 ` Baoquan He
@ 2016-09-08 15:32 ` Thomas Garnier
0 siblings, 0 replies; 9+ messages in thread
From: Thomas Garnier @ 2016-09-08 15:32 UTC (permalink / raw)
To: Baoquan He
Cc: AKASHI Takahiro, Thomas Gleixner, Ingo Molnar, H . Peter Anvin,
Eric Biederman, Andrew Morton, Xunlei Pang, HATAYAMA Daisuke,
Kees Cook, Kernel Hardening, Eugene Surovegin,
the arch/x86 maintainers, kexec, LKML
On Tue, Sep 6, 2016 at 11:17 PM, Baoquan He <bhe@redhat.com> wrote:
> On 09/07/16 at 03:09pm, AKASHI Takahiro wrote:
>> On Mon, Aug 29, 2016 at 06:11:37PM +0800, Baoquan He wrote:
>> > Hi Thomas,
>> >
>> > I used below code and it works. Since using VMCOREINFO_NUMBER can reuse
>> > the existing struct number_table to import the data. It makes change
>> > easier. But the place could be next to KERNEL_IMAGE_SIZE, or as your
>> > patch did, both is fine.
>>
>> I think we'd better avoid adding arch-specific code in generic code
>> if possible, especially in this case, since there is a dedicated interface,
>> arch_crash_save_vmcoreinfo().
>
> Yes, agree. Previously the reason I put KERNEL_IMAGE_SIZE in
> crash_save_vmcoreinfo_init is kernel text randomization could be a
> generic method for all ARCHes. Then it can be taken out from the #ifdef
> scope. Now seeing it again, it's better to be put in
> arch_crash_save_vmcoreinfo, at least for the time being.
>
> Hi Thomas,
>
> By the way, will you repost with the VMCOREINFO_NUMBER format? If not, I
> can repost after I test all kexec/makedumpfile changes.
I think you should repost it.
>
> Thanks
> Baoquan
>
>>
>> -Takahiro AKASHI
>>
>> > ---
>> > kernel/kexec_core.c | 3 +++
>> > 1 file changed, 3 insertions(+)
>> >
>> > diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c
>> > index 5616755..81bde86 100644
>> > --- a/kernel/kexec_core.c
>> > +++ b/kernel/kexec_core.c
>> > @@ -1469,6 +1469,9 @@ static int __init crash_save_vmcoreinfo_init(void)
>> > VMCOREINFO_NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE);
>> > #ifdef CONFIG_X86
>> > VMCOREINFO_NUMBER(KERNEL_IMAGE_SIZE);
>> > + VMCOREINFO_NUMBER(PAGE_OFFSET);
>> > + VMCOREINFO_NUMBER(VMALLOC_START);
>> > + VMCOREINFO_NUMBER(VMEMMAP_START);
>> > #endif
>> > #ifdef CONFIG_HUGETLB_PAGE
>> > VMCOREINFO_NUMBER(HUGETLB_PAGE_DTOR);
>> > --
>> > 2.5.5
>> >
>> > On 08/18/16 at 07:47am, Thomas Garnier wrote:
>> > > KASLR memory randomization can randomize the base of the physical memory
>> > > mapping (PAGE_OFFSET), vmalloc (VMALLOC_START) and vmemmap
>> > > (VMEMMAP_START). Adding these variables on VMCOREINFO so tools can
>> > > easily identify the base of each memory section.
>> > >
>> > > Signed-off-by: Thomas Garnier <thgarnie@google.com>
>> > > ---
>> > > Based on next-20160817
>> > > ---
>> > > arch/x86/kernel/machine_kexec_64.c | 3 +++
>> > > include/linux/kexec.h | 6 ++++++
>> > > 2 files changed, 9 insertions(+)
>> > >
>> > > diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
>> > > index fc3389f..b1f15a2 100644
>> > > --- a/arch/x86/kernel/machine_kexec_64.c
>> > > +++ b/arch/x86/kernel/machine_kexec_64.c
>> > > @@ -338,6 +338,9 @@ void arch_crash_save_vmcoreinfo(void)
>> > > vmcoreinfo_append_str("KERNELOFFSET=%lx\n",
>> > > kaslr_offset());
>> > > VMCOREINFO_PHYS_BASE(phys_base);
>> > > + VMCOREINFO_PAGE_OFFSET(PAGE_OFFSET);
>> > > + VMCOREINFO_VMALLOC_START(VMALLOC_START);
>> > > + VMCOREINFO_VMEMMAP_START(VMEMMAP_START);
>> > > }
>> > >
>> > > /* arch-dependent functionality related to kexec file-based syscall */
>> > > diff --git a/include/linux/kexec.h b/include/linux/kexec.h
>> > > index d3ae429..cd3874c 100644
>> > > --- a/include/linux/kexec.h
>> > > +++ b/include/linux/kexec.h
>> > > @@ -261,6 +261,12 @@ phys_addr_t paddr_vmcoreinfo_note(void);
>> > > vmcoreinfo_append_str("CONFIG_%s=y\n", #name)
>> > > #define VMCOREINFO_PHYS_BASE(value) \
>> > > vmcoreinfo_append_str("PHYS_BASE=%lx\n", (unsigned long)value)
>> > > +#define VMCOREINFO_PAGE_OFFSET(value) \
>> > > + vmcoreinfo_append_str("PAGE_OFFSET=%lx\n", (unsigned long)value)
>> > > +#define VMCOREINFO_VMALLOC_START(value) \
>> > > + vmcoreinfo_append_str("VMALLOC_START=%lx\n", (unsigned long)value)
>> > > +#define VMCOREINFO_VMEMMAP_START(value) \
>> > > + vmcoreinfo_append_str("VMEMMAP_START=%lx\n", (unsigned long)value)
>> > >
>> > > extern struct kimage *kexec_image;
>> > > extern struct kimage *kexec_crash_image;
>> > > --
>> > > 2.8.0.rc3.226.g39d4020
>> > >
>> > >
>> > > _______________________________________________
>> > > kexec mailing list
>> > > kexec@lists.infradead.org
>> > > http://lists.infradead.org/mailman/listinfo/kexec
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v1] kdump, vmcoreinfo: report memory sections virtual addresses
@ 2016-09-13 7:08 Baoquan He
0 siblings, 0 replies; 9+ messages in thread
From: Baoquan He @ 2016-09-13 7:08 UTC (permalink / raw)
To: tonli, Thomas Garnier
Cc: Baoquan He, Thomas Gleixner, Ingo Molnar, H . Peter Anvin,
Eric Biederman, Andrew Morton, Xunlei Pang, HATAYAMA Daisuke,
keescook, kernel-hardening, surovegin, x86, kexec, linux-kernel
Hi Thomas,
I used below code and it works. Since using VMCOREINFO_NUMBER can reuse
the existing struct number_table to import the data. It makes change
easier. But the place could be next to KERNEL_IMAGE_SIZE, or as your
patch did, both is fine.
---
kernel/kexec_core.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c
index 5616755..81bde86 100644
--- a/kernel/kexec_core.c
+++ b/kernel/kexec_core.c
@@ -1469,6 +1469,9 @@ static int __init crash_save_vmcoreinfo_init(void)
VMCOREINFO_NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE);
#ifdef CONFIG_X86
VMCOREINFO_NUMBER(KERNEL_IMAGE_SIZE);
+ VMCOREINFO_NUMBER(PAGE_OFFSET);
+ VMCOREINFO_NUMBER(VMALLOC_START);
+ VMCOREINFO_NUMBER(VMEMMAP_START);
#endif
#ifdef CONFIG_HUGETLB_PAGE
VMCOREINFO_NUMBER(HUGETLB_PAGE_DTOR);
--
2.5.5
On 08/18/16 at 07:47am, Thomas Garnier wrote:
> KASLR memory randomization can randomize the base of the physical memory
> mapping (PAGE_OFFSET), vmalloc (VMALLOC_START) and vmemmap
> (VMEMMAP_START). Adding these variables on VMCOREINFO so tools can
> easily identify the base of each memory section.
>
> Signed-off-by: Thomas Garnier <thgarnie@google.com>
> ---
> Based on next-20160817
> ---
> arch/x86/kernel/machine_kexec_64.c | 3 +++
> include/linux/kexec.h | 6 ++++++
> 2 files changed, 9 insertions(+)
>
> diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
> index fc3389f..b1f15a2 100644
> --- a/arch/x86/kernel/machine_kexec_64.c
> +++ b/arch/x86/kernel/machine_kexec_64.c
> @@ -338,6 +338,9 @@ void arch_crash_save_vmcoreinfo(void)
> vmcoreinfo_append_str("KERNELOFFSET=%lx\n",
> kaslr_offset());
> VMCOREINFO_PHYS_BASE(phys_base);
> + VMCOREINFO_PAGE_OFFSET(PAGE_OFFSET);
> + VMCOREINFO_VMALLOC_START(VMALLOC_START);
> + VMCOREINFO_VMEMMAP_START(VMEMMAP_START);
> }
>
> /* arch-dependent functionality related to kexec file-based syscall */
> diff --git a/include/linux/kexec.h b/include/linux/kexec.h
> index d3ae429..cd3874c 100644
> --- a/include/linux/kexec.h
> +++ b/include/linux/kexec.h
> @@ -261,6 +261,12 @@ phys_addr_t paddr_vmcoreinfo_note(void);
> vmcoreinfo_append_str("CONFIG_%s=y\n", #name)
> #define VMCOREINFO_PHYS_BASE(value) \
> vmcoreinfo_append_str("PHYS_BASE=%lx\n", (unsigned long)value)
> +#define VMCOREINFO_PAGE_OFFSET(value) \
> + vmcoreinfo_append_str("PAGE_OFFSET=%lx\n", (unsigned long)value)
> +#define VMCOREINFO_VMALLOC_START(value) \
> + vmcoreinfo_append_str("VMALLOC_START=%lx\n", (unsigned long)value)
> +#define VMCOREINFO_VMEMMAP_START(value) \
> + vmcoreinfo_append_str("VMEMMAP_START=%lx\n", (unsigned long)value)
>
> extern struct kimage *kexec_image;
> extern struct kimage *kexec_crash_image;
> --
> 2.8.0.rc3.226.g39d4020
>
>
> _______________________________________________
> kexec mailing list
> kexec@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec
^ permalink raw reply related [flat|nested] 9+ messages in thread
end of thread, other threads:[~2016-09-13 7:08 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-18 14:47 [PATCH v1] kdump, vmcoreinfo: report memory sections virtual addresses Thomas Garnier
2016-08-19 2:41 ` Baoquan He
2016-08-19 18:01 ` Kees Cook
2016-08-29 10:11 ` Baoquan He
2016-08-29 14:20 ` Thomas Garnier
2016-09-07 6:09 ` AKASHI Takahiro
2016-09-07 6:17 ` Baoquan He
2016-09-08 15:32 ` Thomas Garnier
2016-09-13 7:08 Baoquan He
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).