From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752589AbcELIYz (ORCPT ); Thu, 12 May 2016 04:24:55 -0400 Received: from mail-bn1bon0068.outbound.protection.outlook.com ([157.56.111.68]:2048 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752512AbcELIYv (ORCPT ); Thu, 12 May 2016 04:24:51 -0400 Authentication-Results: huawei.com; dkim=none (message not signed) header.d=none;huawei.com; dmarc=none action=none header.from=caviumnetworks.com; Date: Thu, 12 May 2016 11:24:27 +0300 From: Yury Norov To: "Zhangjian (Bamvor)" CC: Arnd Bergmann , , , Andrew Pinski , , , Hanjun Guo , , , , "jijun (D)" , , , , , , , , , Andrew Pinski , , Subject: Re: [PATCH 20/25] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Message-ID: <20160512082427.GA1587@yury-N73SV> References: <1459894127-17698-1-git-send-email-ynorov@caviumnetworks.com> <573305A8.50406@huawei.com> <5733149C.4030903@huawei.com> <5250356.myv9GIZ34h@wuerfel> <5733FC71.8070101@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <5733FC71.8070101@huawei.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-Originating-IP: [95.143.213.121] X-ClientProxiedBy: AM3PR08CA0012.eurprd08.prod.outlook.com (10.160.207.150) To CY1PR07MB2229.namprd07.prod.outlook.com (10.164.112.143) X-MS-Office365-Filtering-Correlation-Id: f388e30f-adc2-4c95-2cb4-08d37a3ee14f X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2229;2:e8gMvTe8qa0V9X9hPZqcgcF1OT7kmar+MSVQwZ2/uFDQ/11/ko4pUxo9zD9RQmJfDxEWIuIkKeKqkxPO0mp2hqAzkFoR3JxXOss+omKxhsINJHoLkC8KGJ5Z5YVfTqrBbDzfh4ZVjl/kcCWrpRO2p+wHWy8cXN0haDWgvBRpTQ1KRinARlbO7g/SGzAUC/8L;3:9KgvCjEDXg1cqfgZPYEjS/Ijhxp3qrug2HNU8PHIgfeZaCuRydWecLG0aTuSPHXYsus5lTb4PaOeql7IrdrckmjAAsw+8Otu8t7iYLoVWvTY9EBmwMaTn7A/jWa39U8g X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR07MB2229; X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2229;25:tRDVOM9sRhG5W1+xuphz/TjNthI+oOvVAEqAj37mjYMtOPgvEx7ce6W814mx6+7ygOeL7ukqYPH3T6jbCgaGdLLAj5lCcsM2F7KVg3GpauH+yxPJ+pmFH8PLR0S30pxgQdyrJmVwDnlSxMb0T/w/q2t0wy/YiwyvWu3S1+a/oS4CEUgaJaITrOJulNZDR6gh7kKExpkcWOn+afXAYIiG4/DT2+cF7EVn3qBMU+cRgGwtLJ4GS9jCkXUNeIZtTIHvw5lbrNyby1N5ETIEK3KUeg3AE5rqLdEwa4TwSc4VSa2HWvHNKbOGz9o47hRdRWguajbZwaHglndGc/Rc95XFr7OGIRM76SIiH2dh8wt2Z9KF833cabp1ipYnBuWT4Xef7hPjEQZO8YbQCqgypRR6aquvWIvWr//tzheqF5hHsaSaMrlfhY0G5mmsYGtCEDUNaYBr+8ckMMLBFiz+b2c+QHfCnYcYRQxCAR6ovbUd2PEA/P+5LGnFwpBPHO6Hlku75hZrPrH5/7XI7T5L4yVHhdo5umTcCxaV0z/meDJd897/SBJGkpF1ac+spdWDyPBwW15spAF/TNeEhqs0vAjZC+OKmboSAPPi99k7Q8BZUIzzCbpgWzuLOx3fAG1MfsXHXrBeebDE2fIwb7CoJXtvwSH+tAd8+Enm48r/Zgg8XpMn6gMyLYLnoBewQqnpnyIvFE+RkKjRoTQZgNGkM7gvi6PqwHBuP2+pJmqShTGygo43XH0pnErbPyD/xQ0NH6w5 X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2229;20:/5kEth18hEmu7YlV83hmD8ish3uiOI3D+8fRbw2o3vVOwzOv2+0kQIAZkJjXS6sKlZK0iBmFDIFzAZpPn8Pp9G8UbyalAdVjleXILMcvwdq5yUku+hHlWA3VxAWFYmgutZ5CMtD7/jF7EDrZlDFg2IGto5n9mYSqnD0S4zZcdk/5WJkji8hd023Fvs4AiW5TqKeHZUam6ifeDvl+e3o8x+bk80fo75w+6rNAjvt81xgNRAVU0MukgdGOQINYTC84G2WhtS1mOnOzefGe5MXqBbFGS0xeuriZ1knH84M4gwUwVX9bvZLCaIZ/wUvFbrf6eTl9bsLKvH8/aUGStJaSmanYiTQ9aahterxxrVuJPXgQNtBF3qQWSpRZBsF9lq8CuY5b0Gr32A91QPMVosxRsUw7p07mAFC6X+i1psn3kPEql7aOEh4x4znCH1KIbzDObtN7A8U1w779AGTLYcFuB1VzwhjEkmFpIN3wc0xkPM5c46iwc0D2ZWCUAhj9LgULA2z3UTXJS/KKyG4rbtX6q6uRDGzSdI3akY/CHwjk0r41JtmcA6gnM48NjZait2gxiPVw2AQSxfFji6V7B9QpafSgpR/fNIztI5oMOQaYUGo= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046);SRVR:CY1PR07MB2229;BCL:0;PCL:0;RULEID:;SRVR:CY1PR07MB2229; X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2229;4:XoNR1wr3WUOGTIAGIoawh/+iWX3+PO9VSAbHYSpBTaeIAI5LkQYKuXMuQFUKFwQNBqZIOfctm+PxowexhT6oEJJWPew8qi3qDvVdioeaGleYq4AqM9oWQtjTknBWaurQVF84wZGKeQJiy2yqSRy95BmmMLizxg1bKTKf+YHWmJEq2fw/wpMKkqwnyJpxaCv3SaVVBYqEzzI5HiBCoN1pET5Z2lssKdgvntsFHS4IGUVro0VKraoeUjQy6a3Eaz0mPWhqbE/e3h1f2LMvyWam0I2e+ogKw3cmvZuj2SKdgRYfEVjQxZpDnvGXX8v/z06lB9W4VW4/rVuAfxs38hpuB7geMhI21myDf87ZU8ZfREcNm+cme65FbYIk6Irhw60y X-Forefront-PRVS: 0940A19703 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6069001)(6009001)(24454002)(2950100001)(1076002)(50986999)(54356999)(9686002)(83506001)(76506005)(76176999)(81166006)(46406003)(586003)(93886004)(5004730100002)(2906002)(189998001)(97756001)(23726003)(3846002)(6116002)(4001350100001)(33656002)(77096005)(92566002)(50466002)(5008740100001)(66066001)(4326007)(47776003)(42186005)(110136002)(33716001)(21314002);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR07MB2229;H:localhost;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY1PR07MB2229;23:9MwAIL5bmDuZa8B9tp9mFJYSUXUds/sCtmIYrXcSS?= =?us-ascii?Q?Ovm9U+QLnItWFtD9HmGrdWaHtHKsuPeLOBve0gxDLJzcKaHLAs6FtH58Fci4?= =?us-ascii?Q?tmsj9jm6l6oDl7hxLl9sNZX2Wci6pQ9iprwYAjPJQiThe0oG4CEF6IHi1hQS?= =?us-ascii?Q?v4TXpZ/Ez+3g7hrDGVp50WZ0pqQobVZmD0J8Dtc3j5oLj7AekMOZT77HvTTG?= =?us-ascii?Q?uhZ0md6wPh387XpnPJP2MeYvroDOBPAYXNBs9yM3bMhV1D1eUsw7rkr3uMPJ?= =?us-ascii?Q?aNnRZg55YJKOgQIxr2JB/7tPcEQYgUeSTz0wDo5/Q0TvRxRUtM75nQkwbzPH?= =?us-ascii?Q?Ocg7/ozjYseAUOy3TBUjXUkff1p0tG2ydPL6NU8/KPWxbdz+5inASxilQ5jf?= =?us-ascii?Q?UVq1v6CHYcQtvS3JiR6ZmUf+zSsjjHpy/lUKyJB+kRKnABrG9J0SxoJlPSQe?= =?us-ascii?Q?8SzAGBpgh32ceS5WoX6VlheKLM9SMfXRLoK/gPJuPCPVEyJVfFW20qv6FV5U?= =?us-ascii?Q?QeLT9mSwRgkHI9U86Bd2JsgmQ3ubDXOEzN7qNka4XD41U3uIiwFNVDnkoPg0?= =?us-ascii?Q?qYF1FRToCphUckaflt3UQBGZOTr2Kyu6HckLkG+CEJgt3HZQqwOwvw/M+ubU?= =?us-ascii?Q?y8pMxd6LXA/T1VSuag+wWBGF2nAacYwVxHJFtIA6Db5dBSMnGMQ8Z46hyxGl?= =?us-ascii?Q?KoeG6pALkgTqHFe6XcgF8/A8xivlOULROj2zubAJ76CCC1RhBAjlSX8Y3Mg4?= =?us-ascii?Q?3c8YnezGq0ArrROj8EBAc//+k1VFo+qfOPapC0OyBvuG+Geid4862ebmqnnd?= =?us-ascii?Q?PXisgKQMK02sALUTVaJctM5BfApPm1x9hGhIPjArsiR58gjZa2mViNIhGdQg?= =?us-ascii?Q?uGnb4AfxcV6yzUXPedkvYcl5pjoOf8Nsh+LjMwwjPmBpwHA9PDuyYu1zCz/k?= =?us-ascii?Q?rikWa261gO7avzpFYag7d7wFJDH8o2KBFO6h0Uw8Q=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2229;5:F24hXtfFwvL3YYU5L3pr/vSrbtNjvXmQmZiw49INTf98Z0bZ3c/35Sp/RuohIw1jnSR9upC4iB1rzdewINPUHNlCxPJNTCNJ3b2TA7ubHC/7ZHYdDFh5aAyTBhFtFDfw7w8KXC9/nAz8syEK0SzneQ==;24:XdClNOLLRQFzZ4V64c9t8Mz7HHmlm1UI/BGi5BwF6FH75ko8jRijlMgOIP3KBGHllUWoPoRLksrVMhcXmlg2htvNmvWMNgh6v118/xVgPOI=;7:X1yS1gjwy2Rc+lH+GdGhTpJflWhnDs2S4h1YpZegG/zl+M2dXM8YiQgKQxqCfIt9BJQycDFD49ecL8OlN4E5E33bel0kHKAsZlDqSU0zsnxSqsTvoX+Nys0BGSR/A/n4cgEEtYXkgp6pz1VkBjWASvPPiTki43p6jvbl0Y6BH3+khA0/InSJP3842ek95LgI SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 May 2016 08:24:47.2401 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR07MB2229 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, May 12, 2016 at 11:45:53AM +0800, Zhangjian (Bamvor) wrote: [...] > >Hmm, that is indeed tricky. I think COMPAT_SYSCALL_WRAP4 rightfully > >refuses the loff_t argument here, as the common case is that this is > >not possible. > It works if I apply the following patch, I defined the wrong `__TYPE_IS_xxx` > yesterday. Should we merge this into ILP32 series or send the compat.h > and syscalls.h individually? The current series of ILP32 is a little bit > long and hard to review. > diff --git a/include/linux/compat.h b/include/linux/compat.h > index ba6ebe0..22a9565 100644 > --- a/include/linux/compat.h > +++ b/include/linux/compat.h > @@ -747,7 +747,8 @@ asmlinkage long compat_sys_fanotify_mark(int, unsigned int, __u32, __u32, > #ifndef __SC_COMPAT_CAST > #define __SC_COMPAT_CAST(t, a) ({ \ > BUILD_BUG_ON((sizeof(t) > 4) && !__TYPE_IS_L(t) && \ > - !__TYPE_IS_UL(t) && !__TYPE_IS_PTR(t)); \ > + !__TYPE_IS_UL(t) && !__TYPE_IS_PTR(t) && \ > + !__TYPE_IS_LOFFT(t)); \ I think it's wrong, as loff_t is 64-bit in 32-bit userspace, and this will clear meaningful data in top halve. > ((t) ((t)(-1) < 0 ? (s64)(s32)(a) : (u64)(u32)(a))); \ > }) > #endif > diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h > index 6e57d9c..66eb85d 100644 > --- a/include/linux/syscalls.h > +++ b/include/linux/syscalls.h > @@ -47,6 +47,7 @@ > #define __TYPE_IS_L(t) (__same_type((t)0, 0L)) > #define __TYPE_IS_UL(t) (__same_type((t)0, 0UL)) > #define __TYPE_IS_LL(t) (__same_type((t)0, 0LL) || __same_type((t)0, 0ULL)) > +#define __TYPE_IS_LOFFT(t) (__same_type((t)0, (loff_t)0)) > #define __SC_LONG(t, a) __typeof(__builtin_choose_expr(__TYPE_IS_LL(t), 0LL, 0L)) a > #define __SC_CAST(t, a) (t) a > #define __SC_ARGS(t, a) a > diff --git a/kernel/compat_wrapper.c b/kernel/compat_wrapper.c > index 98b68b8..28f02d0 100644 > --- a/kernel/compat_wrapper.c > +++ b/kernel/compat_wrapper.c > @@ -304,3 +304,7 @@ COMPAT_SYSCALL_WRAP3(getpeername, int, fd, struct sockaddr __user *, usockaddr, > COMPAT_SYSCALL_WRAP6(sendto, int, fd, void __user *, buff, size_t, len, > unsigned int, flags, struct sockaddr __user *, addr, > int, addr_len); > +COMPAT_SYSCALL_WRAP4(pread64, unsigned int, fd, char __user *, buf, > + size_t, count, loff_t, pos); > +COMPAT_SYSCALL_WRAP4(pwrite64, unsigned int, fd, const char __user *, buf, > + size_t, count, loff_t, pos); For cases like this I think we should write wrappers by hands. In unistd.h we can use __SC_WRAP, so they will work like wrappers generated by COMPAT_SYSCALL_WRAPx()