X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fx86_64%2Fkernel%2Ftraps-xen.c;fp=arch%2Fx86_64%2Fkernel%2Ftraps-xen.c;h=13c6d3d47a183e8d4f87e0b8184e366d741af1c4;hb=e0ff8aa1acd079b70e796571917ae0449b7c465b;hp=a551b73a3b007c12afebc89fa6c83856be14a984;hpb=bef9ea3086d47cf98cfd0ea389953a0af0b60114;p=linux-2.6.git diff --git a/arch/x86_64/kernel/traps-xen.c b/arch/x86_64/kernel/traps-xen.c index a551b73a3..13c6d3d47 100644 --- a/arch/x86_64/kernel/traps-xen.c +++ b/arch/x86_64/kernel/traps-xen.c @@ -115,7 +115,6 @@ static int call_trace = 1; #define call_trace (-1) #endif - #ifdef CONFIG_KALLSYMS # include void printk_address(unsigned long address) @@ -182,7 +181,7 @@ static unsigned long *in_exception_stack(unsigned cpu, unsigned long stack, break; #endif default: - end = per_cpu(orig_tss, cpu).ist[k]; + end = per_cpu(orig_ist, cpu).ist[k]; break; } /* @@ -936,6 +935,14 @@ asmlinkage void __kprobes do_debug(struct pt_regs * regs, */ if (!user_mode(regs)) goto clear_TF_reenable; + /* + * Was the TF flag set by a debugger? If so, clear it now, + * so that register information is correct. + */ + if (tsk->ptrace & PT_DTRACE) { + regs->eflags &= ~TF_MASK; + tsk->ptrace &= ~PT_DTRACE; + } } /* Ok, finally something we can handle */