sparc64: do not bail out in get_scno if PTRACE_PEEKTEXT fails
If the kernel contains commit 84d77d3f06e7e8dea057d10e8ec77ad71f721be3, PTRACE_PEEKTEXT becames unavailable when the process dumpable flag is cleared. As this is not a fatal condition for get_scno, do not bail out if PTRACE_PEEKTEXT fails. This condition is triggered and therefore tested by prctl-dumpable test. * linux/sparc64/get_scno.c (arch_get_scno): Do not bail out if PTRACE_PEEKTEXT fails.
This commit is contained in:
parent
92ac75f6f4
commit
9284ce55f0
@ -6,18 +6,18 @@ arch_get_scno(struct tcb *tcp)
|
||||
unsigned long trap;
|
||||
errno = 0;
|
||||
trap = ptrace(PTRACE_PEEKTEXT, tcp->pid, (void *) sparc_regs.tpc, 0);
|
||||
if (errno)
|
||||
return -1;
|
||||
trap >>= 32;
|
||||
switch (trap) {
|
||||
case 0x91d02010:
|
||||
/* Linux/SPARC syscall trap. */
|
||||
update_personality(tcp, 1);
|
||||
break;
|
||||
case 0x91d0206d:
|
||||
/* Linux/SPARC64 syscall trap. */
|
||||
update_personality(tcp, 0);
|
||||
break;
|
||||
if (errno == 0) {
|
||||
trap >>= 32;
|
||||
switch (trap) {
|
||||
case 0x91d02010:
|
||||
/* Linux/SPARC syscall trap. */
|
||||
update_personality(tcp, 1);
|
||||
break;
|
||||
case 0x91d0206d:
|
||||
/* Linux/SPARC64 syscall trap. */
|
||||
update_personality(tcp, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
tcp->scno = sparc_regs.u_regs[U_REG_G1];
|
||||
|
Loading…
x
Reference in New Issue
Block a user