From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760017AbcHYQBB (ORCPT ); Thu, 25 Aug 2016 12:01:01 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:62913 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753440AbcHYQA7 (ORCPT ); Thu, 25 Aug 2016 12:00:59 -0400 From: Arnd Bergmann To: Yury Norov Cc: Andreas Schwab , catalin.marinas@arm.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-arch@vger.kernel.org, libc-alpha@sourceware.org, schwidefsky@de.ibm.com, heiko.carstens@de.ibm.com, pinskia@gmail.com, broonie@kernel.org, joseph@codesourcery.com, christoph.muellner@theobroma-systems.com, bamvor.zhangjian@huawei.com, szabolcs.nagy@arm.com, klimov.linux@gmail.com, Nathan_Lynch@mentor.com, agraf@suse.de, Prasun.Kapoor@caviumnetworks.com, kilobyte@angband.pl, geert@linux-m68k.org, philipp.tomsich@theobroma-systems.com, manuel.montezelo@gmail.com, linyongting@huawei.com, maxim.kuvyrkov@linaro.org, davem@davemloft.net Subject: Re: [PATCH 01/19] compat ABI: use non-compat openat and open_by_handle_at variants Date: Thu, 25 Aug 2016 17:52:11 +0200 Message-ID: <3771388.9SFlpYVFmp@wuerfel> User-Agent: KMail/5.1.3 (Linux/4.4.0-31-generic; KDE/5.18.0; x86_64; ; ) In-Reply-To: <20160815143028.GA7193@yury-N73SV> References: <1466207668-10549-1-git-send-email-ynorov@caviumnetworks.com> <20160815143028.GA7193@yury-N73SV> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Provags-ID: V03:K0:GQV4IGOc2qXPjgNiUsCouqgyJWmHVqh/i40bhsJChzYfbdQrOZa 6k3dCCTcC40WvHJ/8drJzbbrYdKtOW7I4o4SXwVrnAlFYcSf7M98nK/mpkoZPxugTCUq/2/ vnLAZFcMzoXDa5CP7/3v7MaG+J2KVq76lqO/t894B6dZM2KKLtiYVQLFnCrE6iWTOIGcK96 8QUlCtQzT2jpuK1IXPL+A== X-UI-Out-Filterresults: notjunk:1;V01:K0:2DVolCRTSD4=:VtN8Mkf7PNDELuF0dKjV6H Q32z/P3nW/a8Reyhwzy3vW4rrDCk4nQ7X+4cJBk6yMVJ38sFWiuCfaR+mIx90jA5JoT8IZLFd Rec3KONoLCKNeQw73oCVi62i8cOF7TKmmSqjmpd2I2uC9+hWY+vsIwBqCwNdMizBtmTe0jobM Yk31HO555/jCwgOC2ipEtNrcqTKvaPRZ8DiCAL9Lmxx8RGDo386mEtHQhjjfEYeWEYLQBG5tS YBAKmNSI+S3e3HK55X39ocNHihxXyv3yxS/qcJFO39NCLdClW0+vc3B9bI4Og4nQnPF7BNwr1 mG29e8BFjRqNO3+ZbZiJNL/PPVxWIgP+mrfIptHP1/NzgLStxQ5FvJ951KDn75m8f5QMRxpXr oUMpBKCgTPL8ZMaBC500VDyRvVO5r30fu2UKYKkkDQXt+nsCu7tci159neQgLN/QIn5Acr39U LWqfDHc0oNfRKHfTUF9mdH+82OMPOsAuGR2IDggAQtlvJfXRGzRxZdw0NqegiNyns/4xld+re w6TfkLw4X0nqYv2jUc5ZigLPm4W/OE6uUpvcDH5u3S5vY9vYYhnDVvXtNJ8QbF1L8tHCXrGRO 2QgmBnSMWYPiv0Vy7LQoE19va6RYM2eKzwYmnms8fSvZxUEDk30NWWOnURt12bIeBqA/1tA+7 t0VALHrzMil4Qoa2SV2plJNLAWvm7+BX3oR9o9cLFUL+CTfVChyS5ayv+LBGBShhWVOkyjBWY jtX01SFXfHkmUxqb Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Monday, August 15, 2016 5:30:28 PM CEST Yury Norov wrote: > On Mon, Jun 27, 2016 at 09:47:38AM +0200, Andreas Schwab wrote: > > Yury Norov writes: > > > > > The only difference is that non-compat version forces O_LARGEFILE, > > > and it should be the default behaviour for all architectures, as > > > we don't support 32-bit off_t. The only exception is tile32, that > > > continues with compat version of syscalls. > > > > > > Signed-off-by: Yury Norov > > > Acked-by: Arnd Bergmann > > > Acked-by: Chris Metcalf [for tile] > > > --- > > > arch/tile/kernel/compat.c | 3 +++ > > > 1 file changed, 3 insertions(+) > > > > > > diff --git a/arch/tile/kernel/compat.c b/arch/tile/kernel/compat.c > > > index 4912084..489ae19 100644 > > > --- a/arch/tile/kernel/compat.c > > > +++ b/arch/tile/kernel/compat.c > > > @@ -94,6 +94,9 @@ COMPAT_SYSCALL_DEFINE5(llseek, unsigned int, fd, unsigned int, offset_high, > > > #define compat_sys_readahead sys32_readahead > > > #define sys_llseek compat_sys_llseek > > > > > > +#define sys_openat compat_sys_openat > > > +#define sys_open_by_handle_at compat_sys_open_by_handle_at > > > + > > > /* Call the assembly trampolines where necessary. */ > > > #define compat_sys_rt_sigreturn _compat_sys_rt_sigreturn > > > #define sys_clone _sys_clone > > > > This is a no-op. Did you mean to add this? Without that the testsuite > > of tar fails on ILP32. > > The change you suggest below is what I originally sent at the end of > December, but that chunk was lost after one of numerous rebases probably. > > http://lkml.iu.edu/hypermail/linux/kernel/1512.3/00510.html > > IIRC, the only difference between this couple of syscalls and their > compat versions is that non-compat syscalls set O_LARGEFILE depending > on (BITS_PER_LONG != 32). Next patch of this series introduces > ARCH_32BIT_OFF_T config option to force O_LARGEFILE for 64-bit arches, > and all new 32-bit arches, as ARCH_32BIT_OFF_T is enabled for existing > 32-bit arches explicitly. > > O_LARGEFILE is controlled like this: > -#define force_o_largefile() (BITS_PER_LONG != 32) > +#define force_o_largefile() (!IS_ENABLED(CONFIG_ARCH_32BIT_OFF_T)) > > So if I restore original patch, everything will work. But my question > is: if ARCH_32BIT_OFF_T disables O_LARGEFILE for tile32 anyway, what > for we redirect native syscall handlers to compat ones? They are > looking identical... I've lost context here, but let me try to recall what we had discussed in the past: - native 32-bit architectures are handled using CONFIG_ARCH_32BIT_OFF_T - native 64-bit architectures keep setting the flag. - compat 32-bit architectures need special cases, but the only one that exists is tile, which has to keep not setting O_LARGEFILE while new compat architectures (ilp32) should set it. > If my understanding is correct, we can drop the change in > arch/tile/kernel/compat.c and join this patch with next one in this > series. > > Chris, Arnd? The change in arch/tile/kernel/compat.c can either come before the below change, or in the same patch, but not later. Arnd > > diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h > > index a26415b..4dcc38d 100644 > > --- a/include/uapi/asm-generic/unistd.h > > +++ b/include/uapi/asm-generic/unistd.h > > @@ -178,7 +178,7 @@ __SYSCALL(__NR_fchownat, sys_fchownat) > > #define __NR_fchown 55 > > __SYSCALL(__NR_fchown, sys_fchown) > > #define __NR_openat 56 > > -__SC_COMP(__NR_openat, sys_openat, compat_sys_openat) > > +__SYSCALL(__NR_openat, sys_openat) > > #define __NR_close 57 > > __SYSCALL(__NR_close, sys_close) > > #define __NR_vhangup 58 > > @@ -676,8 +676,7 @@ __SYSCALL(__NR_fanotify_mark, sys_fanotify_mark) > > #define __NR_name_to_handle_at 264 > > __SYSCALL(__NR_name_to_handle_at, sys_name_to_handle_at) > > #define __NR_open_by_handle_at 265 > > -__SC_COMP(__NR_open_by_handle_at, sys_open_by_handle_at, \ > > - compat_sys_open_by_handle_at) > > +__SYSCALL(__NR_open_by_handle_at, sys_open_by_handle_at) > > #define __NR_clock_adjtime 266 > > __SC_COMP(__NR_clock_adjtime, sys_clock_adjtime, compat_sys_clock_adjtime) > > #define __NR_syncfs 267 >