[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] x86/traps: fix an off-by-one error
On 05.05.2020 13:06, Hongyan Xia wrote: > --- a/xen/arch/x86/traps.c > +++ b/xen/arch/x86/traps.c > @@ -300,6 +300,7 @@ static void show_guest_stack(struct vcpu *v, const struct > cpu_user_regs *regs) > int i; > unsigned long *stack, addr; > unsigned long mask = STACK_SIZE; > + void *stack_page = NULL; > > /* Avoid HVM as we don't know what the stack looks like. */ > if ( is_hvm_vcpu(v) ) > @@ -328,7 +329,7 @@ static void show_guest_stack(struct vcpu *v, const struct > cpu_user_regs *regs) > vcpu = maddr_get_owner(read_cr3()) == v->domain ? v : NULL; > if ( !vcpu ) > { > - stack = do_page_walk(v, (unsigned long)stack); > + stack_page = stack = do_page_walk(v, (unsigned long)stack); > if ( (unsigned long)stack < PAGE_SIZE ) > { > printk("Inaccessible guest memory.\n"); > @@ -358,7 +359,7 @@ static void show_guest_stack(struct vcpu *v, const struct > cpu_user_regs *regs) > if ( mask == PAGE_SIZE ) > { > BUILD_BUG_ON(PAGE_SIZE == STACK_SIZE); > - unmap_domain_page(stack); > + unmap_domain_page(stack_page); > } With this I think you want to change the whole construct here to if ( stack_page ) unmap_domain_page(stack_page); i.e. with the then no longer relevant BUILD_BUG_ON() also dropped. What's more important though - please also fix the same issue in compat_show_guest_stack(). Unless I'm mistaken of course, in which case it would be nice if the description could mention why the other similar function isn't affected. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |