[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] x86/PV: replace assertions in '0' debug key stack dumping
commit 525eac931794434593c39a1d1cd739ad8b326e27 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Tue Oct 19 10:07:42 2021 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Tue Oct 19 10:07:42 2021 +0200 x86/PV: replace assertions in '0' debug key stack dumping While it was me to add them, I'm afraid I don't see justification for the assertions: A vCPU may very well have got preempted while in user mode. Limit compat guest user mode stack dumps to the containing page (like is done when using do_page_walk()), and suppress user mode stack dumping altogether for 64-bit domains. Fixes: cc0de53a903c ("x86: improve output resulting from sending '0' over serial") Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> --- xen/arch/x86/traps.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index 4f3a7131d6..a1c2adb7ad 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -254,7 +254,6 @@ static void compat_show_guest_stack(struct vcpu *v, struct vcpu *vcpu; unsigned long mfn; - ASSERT(guest_kernel_mode(v, regs)); mfn = read_cr3() >> PAGE_SHIFT; for_each_vcpu( v->domain, vcpu ) if ( pagetable_get_pfn(vcpu->arch.guest_table) == mfn ) @@ -269,6 +268,8 @@ static void compat_show_guest_stack(struct vcpu *v, } mask = PAGE_SIZE; } + else if ( !guest_kernel_mode(v, regs) ) + mask = PAGE_SIZE; } for ( i = 0; i < debug_stack_lines * 8; i++ ) @@ -328,7 +329,12 @@ static void show_guest_stack(struct vcpu *v, const struct cpu_user_regs *regs) { struct vcpu *vcpu; - ASSERT(guest_kernel_mode(v, regs)); + if ( !guest_kernel_mode(v, regs) ) + { + printk("User mode stack\n"); + return; + } + vcpu = maddr_get_owner(read_cr3()) == v->domain ? v : NULL; if ( !vcpu ) { -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |