linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).