[PATCH 18/20] arm64: ptrace: handle ptrace_request differently for aarch32 and ilp32

Yury Norov ynorov at caviumnetworks.com
Fri Jun 23 15:28:52 PDT 2017


On Fri, Jun 23, 2017 at 06:03:37PM +0100, James Morse wrote:
> Hi Yury,
> 
> On 04/06/17 13:00, Yury Norov wrote:
> > ILP32 has context-related structures different from both aarch32 and
> > aarch64/lp64. In this patch compat_arch_ptrace() renamed to
> > compat_a32_ptrace(), and compat_arch_ptrace() only makes choice between
> > compat_a32_ptrace() and new compat_ilp32_ptrace() handler.
> > 
> > compat_ilp32_ptrace() calls generic compat_ptrace_request() for all
> > requests except PTRACE_GETSIGMASK and PTRACE_SETSIGMASK, which need
> > special handling.
> 
> Can you elaborate on this special handling?
> 
> How come we don't need to wrap PTRACE_{G,S}ETSIGMASK for aarch32 compat?
> >From kernel/signal32.c that uses compat_sigset_t too.
> 
> It looks like aarch64, ilp32 and aarch32 all use the same size sigset_t,
> so doesn't compat_ptrace_request() already do everything we need?
> 
> ...
> 
> Is this fixing an endian problem? If so, can we document it as such. Do we
> already have the same bug for aarch32 compat?

Originally, the problem was found by Zhou Chengming: https://lkml.org/lkml/2016/6/27/18
But I think you right, this is the fix for endian.

It lookd like aarch32 is buggy, but IIUC to confirm it, the BE arm64
machine is needed. I use qemu and AFAIR it has no BE support.

Zhou, can you test it on your machine and if the bug will be reproduced,
send the patch for aarch32?

Yury



More information about the linux-arm-kernel mailing list