|
|
|
Re: [bug 20412] PTRACE_SINGLESTEP'ing an instruction that calls user helpers never stops the child on ARM | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
|
|
On Sun, 17 Oct 2010, Timo Juhani Lindfors wrote: > Hi, > > [ Also available as https://bugzilla.kernel.org/show_bug.cgi?id=20412 ] > > On ARM glibc contains > > 0x4009b864 <getchar+240>: sub pc, r3, #63 ; 0x3f > > that jumps to the kernel provided user helper page to access __kernel_cmpxchg > at 0xffff0fc0. If I try to PTRACE_SINGLESTEP this instruction the child never > stops. Parent keeps wait()ing forever but child effectively escapes the tracing > completely and continues executing instructions without notifying the parent. > > On ARM single stepping is done by adding a breakpoint to possible branch > targets of each instruction. I guess when ptrace_set_bpt() tries to > add_breakpoint() to this page it just fails? (There's even a comment that says > it can fail and that return value is not checked...) > > Since all user helpers return to LR I think we could teach get_branch_address > to treat jumps to user helpers as instructions that branch to lr? The attached > patch works for me but I am not sure if it is a good solution. It is certainly better than nothing. Acked-by: Nicolas Pitre <nicolas.pitre@xxxxxxxxxx> Nicolas _______________________________________________ linux-arm mailing list linux-arm@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/linux-arm
[Linux ARM] [Linux ARM MSM] [Linux ARM Kernel] [Fedora ARM] [IETF Annouce] [Security] [Bugtraq] [Linux] [Linux OMAP] [Linux MIPS] [ECOS] [Asterisk Internet PBX] [Linux API]
![]() |
![]() |