|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [for-4.7] xen/arm: Don't call setup_virtual_regions multiple time
Should be "multiple times" in title.
On Wed, May 25, 2016 at 02:14:06PM +0100, Julien Grall wrote:
> The commit 2aa925be84293b44ad587ed117184ace61b41dd6 "arm/x86: Use struct
> virtual_region to do bug, symbol, and (x86) exception tables lookup."
> has introduced virtual_region. The call to initialize those regions is
> made in init_traps which is called during each CPU bring up.
>
> This will result to register multiple time the same region and Xen crash
> when an address is looked up.
>
> This can be fixed by moving the call to setup_virtual_region directly in
> start_xen.
>
> Signed-off-by: Julien Grall <julien.grall@xxxxxxx>
> Reported-by: Chenxia Zhao <chenxiao.zhao@xxxxxxxxx>
>
> ---
>
> Cc: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
>
> This is a bug fix for Xen 4.7. Without this change, any use of
> virtual_region (printing a symbol) could lead to a crash in Xen.
Yes, this needs fixing.
And of course this is all ARM code and you're the maintainer so I'm fine
with this going in:
Release-acked-by: Wei Liu <wei.liu2@xxxxxxxxxx>
> ---
> xen/arch/arm/setup.c | 1 +
> xen/arch/arm/traps.c | 2 --
> 2 files changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
> index 09ff1ea..9bc11c4 100644
> --- a/xen/arch/arm/setup.c
> +++ b/xen/arch/arm/setup.c
> @@ -722,6 +722,7 @@ void __init start_xen(unsigned long boot_phys_offset,
> set_current((struct vcpu *)0xfffff000); /* debug sanity */
> idle_vcpu[0] = current;
>
> + setup_virtual_regions(NULL, NULL);
> /* Initialize traps early allow us to get backtrace when an error
> occurred */
> init_traps();
>
> diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
> index 1828ea1..aa3e3c2 100644
> --- a/xen/arch/arm/traps.c
> +++ b/xen/arch/arm/traps.c
> @@ -102,8 +102,6 @@ integer_param("debug_stack_lines", debug_stack_lines);
>
> void init_traps(void)
> {
> - setup_virtual_regions(NULL, NULL);
> -
> /* Setup Hyp vector base */
> WRITE_SYSREG((vaddr_t)hyp_traps_vector, VBAR_EL2);
>
> --
> 1.9.1
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |