From mboxrd@z Thu Jan 1 00:00:00 1970 From: james.morse@arm.com (James Morse) Date: Tue, 27 Jun 2017 11:12:26 +0100 Subject: [PATCH 18/20] arm64: ptrace: handle ptrace_request differently for aarch32 and ilp32 In-Reply-To: <20170623222852.hao3gi7ppwexu7wq@yury-thinkpad> References: <20170604120009.342-1-ynorov@caviumnetworks.com> <20170604120009.342-19-ynorov@caviumnetworks.com> <594D49E9.7090900@arm.com> <20170623222852.hao3gi7ppwexu7wq@yury-thinkpad> Message-ID: <59522F8A.4010709@arm.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Yury, Zhou, On 23/06/17 23:28, Yury Norov wrote: > 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? I've reproduced this on big endian compat-aarch32: yes its broken. I will respin Zhou's patch as a fix. Thanks, James