Messages in this thread Patch in this message | | | Date | Thu, 13 Dec 2012 00:43:07 +0100 | From | Oleg Nesterov <> | Subject | Re: [PATCH] arch/tile: provide PT_FLAGS_COMPAT value in pt_regs |
| |
Hi Chris,
it is too late for me to even try to read this patch, but...
On 12/12, Chris Metcalf wrote: > > This flag is set for ptrace GETREGS or PEEKUSER for processes > that are COMPAT, i.e. 32-bit. ^^^^^^^^^^^^^^^^^^^
at least on x86 this is not the same. TS_COMPAT can also be set if a 64-bit task calls the 32-bit syscall.
> --- a/arch/tile/include/uapi/asm/ptrace.h > +++ b/arch/tile/include/uapi/asm/ptrace.h > @@ -84,5 +84,11 @@ struct pt_regs { > #define PTRACE_O_TRACEMIGRATE 0x00010000 > #define PTRACE_EVENT_MIGRATE 16 > > +/* > + * Flag bits in pt_regs.flags that are part of the ptrace API. > + * We start our numbering higher up to avoid confusion with the > + * non-ABI kernel-internal values that use the low 16 bits. > + */ > +#define PT_FLAGS_COMPAT 0x10000 /* process is an -m32 compat process */
Can't understand how this connects to ptrace (I mean task->ptrace).
OK, let it live in asm/ptrace.h, but it seems that it is similar to (say) PT_FLAGS_RESTORE_REGS and thus it should be 8?
And. arch/tile/kernel/ptrace.c:arch_ptrace() does
case PTRACE_SETOPTIONS: /* Support TILE-specific ptrace options. */ child->ptrace &= ~PT_TRACE_MASK_TILE; tmp = data & PTRACE_O_MASK_TILE; data &= ~PTRACE_O_MASK_TILE;
AFAICS we need something like BUILD_BUG_ON(PTRACE_O_MASK_TILE & PTRACE_O_MASK), and
ret = ptrace_request(child, request, addr, data); if (tmp & PTRACE_O_TRACEMIGRATE) child->ptrace |= PT_TRACE_MIGRATE; this also needs "ret == 0" check, and "&= ~PT_TRACE_MASK_TILE" abobe should be moved here, no?
OTOH using /bin/grep I can't see where do we check ">ptrace & PT_TRACE_MIGRATE".
In short: confused ;)
Oleg.
| |