From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933311AbcATMSG (ORCPT ); Wed, 20 Jan 2016 07:18:06 -0500 Received: from mail-bn1bon0061.outbound.protection.outlook.com ([157.56.111.61]:49559 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750977AbcATMSC (ORCPT ); Wed, 20 Jan 2016 07:18:02 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; Date: Wed, 20 Jan 2016 15:17:36 +0300 From: Yury Norov To: Heiko Carstens CC: , , , , , , , , , , , , , , , , "Zhangjian (Bamvor)" , Bamvor Jian Zhang Subject: Re: [PATCH v6 20/21] all: s390: make compat wrappers the generic solution Message-ID: <20160120121736.GA22029@yury-N73SV> References: <20160115124646.GD4130@osiris> <20160119175223.GA6603@yury-N73SV> <20160120081643.GB3395@osiris> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20160120081643.GB3395@osiris> User-Agent: Mutt/1.5.23 (2014-03-12) X-Originating-IP: [95.143.213.121] X-ClientProxiedBy: AM3PR08CA0033.eurprd08.prod.outlook.com (25.160.207.171) To DM2PR07MB621.namprd07.prod.outlook.com (10.141.177.140) X-Microsoft-Exchange-Diagnostics: 1;DM2PR07MB621;2:0SsvTVYx5vOlgnol18hU8eihuLsozC/BsvgF/jiy1rQOnlNKkGKjtKGj+Y3cT/SGOEKRlBklvZOdBFUqAqf3SVJpVk+FlRZkYAiT6Y36iF+XurDzZo4wXrQw+lwNGdj7mOXBMO6tcarw6G6uRFLdkw==;3:qJkZ/6BcMiDtYwW7cmDbeFlJc6PZCQqf2GeMKGRQQcEHhur9XEW0bxtvNAjxC9c49isnDUiKFkc0P/evPE2huP21oWTlTAB3KoddQgzJvTWDWToAbT11HYjdMXFpbBbf;25:BEfPIILZTGGbTZOSOup7+eJ+34MJloGpVq6IqZcHxKRrMt0t/xdSew+cpO5sQg1FqxhCeSVZR2xwOW2Yjgr4oj3+g8nwKy/SYSCECm3P3HzFUM0V8hHZHbo0fnYIJFWXfvScH1cGQYGL4U/ap2mblvSo9mvzB5TiNWsnsKhLTBWyxNM/uRZaCau1EQ7LeAeFUH9EWaAHiAikJcfhq2mFfQ4uuyz/yAJlk75wboaCgrmIyZa/ijnEXRfjNiqMX9Rx X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR07MB621; X-MS-Office365-Filtering-Correlation-Id: 5c2193e6-3569-4d92-20b5-08d32193bba4 X-Microsoft-Exchange-Diagnostics: 1;DM2PR07MB621;20:CxMJAvGl5TN5tHUgAX1SnDoBqwM3bA69bxnvz/xCMtet258tQ3jmPzQezMs74qnoIOdvtQnXN8oLzT+Oh532nYbOi/LbEjFVsM/4O9nCgYJkeTVW0WjSad18kiUHikjRFFd+bVLJJcUhuhikICuTxKTFtuL1LzHQ7jYD4dg/KxrVvghFwOmpf2av5MMCJKn2elhO6BrfYNjQQCldcn4TJ3Xyz1na30BylFTxT0j/8yvOipjJDas9+OGXEioVQy8Cxdo+JN/y5YFIc8C6eWWMPWFUScJ946b5PFneOGws27JSMIi2u9mPgZjBU668NBL0+fvy0CyiuZfIPM4WRUc2XJMrKXt7JzNPt82yYEEuYIiPU2R19f7Te+cEqow5QWGRGQeqitb6C+jNF9JrEZ1zZ1JT5WjV+JL1aJrnvR+TQqGYmuULVaCeRQmTftQyhbmdcB6h/PQmasxZ23P8Ta8ak+3A4NCXfpRptqplpwDYMFJmbB/geaAJfiWsKeEyMamSjNYtYB6AJZ6izZRA9LVc0tT58RKF1tjy/U7O2e+7IuAErjbL+i7Ta/IlKWorKjiQ+oviq0d05N86Ta+7LlWpCduyh+zUeQPpmmERe4ZtyGw= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(520078)(8121501046)(5005006)(3002001)(10201501046);SRVR:DM2PR07MB621;BCL:0;PCL:0;RULEID:;SRVR:DM2PR07MB621; X-Microsoft-Exchange-Diagnostics: 1;DM2PR07MB621;4:+XK/GSG05PbNGOOkjWfMsasuNDW3jg+jxD9+h/oC7yoPHknaOILkbpWZOUtSiPXn5Wys4GMkZ4UVb0KNcZ3djymZDp9hFlYKTdRbC1J5nRjK6iOQcSE7jw2qtOsWJ4xLm9p5rlFiMeaQZS8fOZMxgcg1geprsXpYyzbu9qA+FqZE1s4urEkHdNvRLvo0L7JY32hwfJbuxeVPakb4ZYJyOoluedVbNdutDZW9dT0sinpVD7dak0kkfuxlmJTwD4GURX0y20QhLNqokv2NE8H+je6c+VEuT2jqQQBG9F5jHq91KcGgG+C05a1aYGXivlEdEirrFDesJqD9j7+LmDvPdTraQvITO5lBurkLav0fh3Y33QBNkpeqbqwSyyE/VbBK X-Forefront-PRVS: 0827D7ACB9 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6069001)(6009001)(199003)(189002)(24454002)(97756001)(6116002)(40100003)(81156007)(47776003)(189998001)(101416001)(1076002)(5001960100002)(33656002)(1096002)(110136002)(19580395003)(4001350100001)(97736004)(50466002)(87976001)(2950100001)(83506001)(15975445007)(105586002)(77096005)(92566002)(46406003)(586003)(106356001)(66066001)(76176999)(2906002)(122386002)(42186005)(23726003)(3846002)(54356999)(5004730100002)(5008740100001)(50986999)(33716001)(76506005)(4326007)(41533002);DIR:OUT;SFP:1101;SCL:1;SRVR:DM2PR07MB621;H:localhost;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM2PR07MB621;23:2OCny+BMiAAYOvYUQ71MhLX47jrwWJP8FcvyFD0EEE?= =?us-ascii?Q?Z3ydsUpHPzni6dv5b677TbcVyFeyGxaoa4lFT4CwXKpFjVjbuSuxiyPIwOpZ?= =?us-ascii?Q?yng5YyhvLlVjpo4HI/pz39nIuxyqc11n5O/Tt9/q+W9ZwI0Uh1FSG0ojrXjg?= =?us-ascii?Q?FL/pDcF9dhUJ/ALCgDwK4VqRldrw5zgnhp+7+GgkgBB7kCjNRXPqYmMRiW/a?= =?us-ascii?Q?VWOfFLHNUwCHkGbKJkQZwxT4xcnjTMwRiEtVTjycl6QIgaWTumzgwDeRfYQ8?= =?us-ascii?Q?sXJLy/lFzWCv+w7Neuz+sGvQiaiwrYU2zYP6+Zzi5W3RUiv/Lin4Bf9+CcK1?= =?us-ascii?Q?vbpDYAL834KDZUkQo/gytPUa508riwS4ry/orr8RilA2LeeDN2J/0lZZxmtR?= =?us-ascii?Q?fJWG41dnWSs/cv1qzlKWxd4wi4tkHSdoIqE1VR5Jh81+ymU4zCTUYEXzu0Sb?= =?us-ascii?Q?nVASTmWun2ej1GOdhSV8zXBomwxvgg93O9pvbpSJZzyJnXSKz4H0YNHWrvm7?= =?us-ascii?Q?n9Mu+sqAy2mKG/PsN1d8Ig3uTwzsy7j1h00vLPQMYYs3HZTcNop8oHEybi+R?= =?us-ascii?Q?W2BO+nTy5jIw/tsdNLDd/qOchJo6du5eLW0KhStF+wGXqZ7hP92Y95IdXwGs?= =?us-ascii?Q?JI/djW5phpaYv2rDhp0c9E/7LAbYFnLWJapoqbrvyaAiMN7YjPufSK5fadxb?= =?us-ascii?Q?43SNE1q6XKsvNAO5EM0UTMBslZmpleAQMmJMGWII+A0tRp+yyDi9I6nM5xVU?= =?us-ascii?Q?dOov27YsUJBdGfa9YTRIxP/FnkxI4mFvrq/Pg199hFn0rVV6frkWRejkaheC?= =?us-ascii?Q?BIJJXHRV7iK/fXeen1Bm6i3l5yra2gG82/kImjJGjhopW6pGC8efv79DKWB0?= =?us-ascii?Q?wUu+7WnqkrZGh3EuOfPVKBjxiA5GdfQY/mBDggrtdReWXlkWfXNS7yTcOp8U?= =?us-ascii?Q?wIVvdVXf9lXhFRRVQexPwoWiMVno+PI6XCFIB/4I5BPqUziiRFf7q8yx0GQF?= =?us-ascii?Q?z4C8e39Y6Q3YyhgmicYev0p2wi04iZdmo8I57q4n+7YXPsB0XcvldrQw7JAU?= =?us-ascii?Q?UgesY3nC2LNz4sgy8OvXVC7HVWmlc+CT3W1lRzGeAGNAr1H0+WZLrnQJvhqF?= =?us-ascii?Q?iy5D6CMub6e87UE/oe9jGnlsuuTtCVEfTB8Ee8Z8IajSwkzg9ZB16kuww87L?= =?us-ascii?Q?Mx6m0DNJwI8nQ=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM2PR07MB621;5:puND8acw2RQEn2ZtsdNCxvC49jwYOwbsh8K85FcDJ28C4qzHzFzvbt1VKMuS4SSsVwElOhNCh1q9n4cTDNRcl4t5II2dzc3h6L7+MlWJZS2/QQbM6eU5ZEae8vJ5XII9WR5uZEBHNdq8b7nO0ZckqA==;24:ljbTLkn7ZwmaBc4pSfwjXGzQEgxQdfz3qARd+FiOtcy7WPwj82jWjKeONCqSJbNG1oIq5KAKuhpYlAGh+SBW/LIGx9a+30c4ibQTlf2oga4= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jan 2016 12:17:57.7939 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR07MB621 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jan 20, 2016 at 09:16:44AM +0100, Heiko Carstens wrote: > > +#ifndef __ARCH_WANT_COMPAT_SYS_GETDENTS64 > > +SYSCALL_DEFINE_WRAP3(getdents64, unsigned int, fd, > > + struct linux_dirent64 __user *, dirent, unsigned int, count) > > +#else > > SYSCALL_DEFINE3(getdents64, unsigned int, fd, > > struct linux_dirent64 __user *, dirent, unsigned int, count) > > +#endif > > { > > struct fd f; > > struct linux_dirent64 __user * lastdirent; > > This is a non-obvious change at first glance. I think it would make sense > to split this patch into at least three or four separate patches: > - one which introduces the infrastructure > - one which converts the non-obvious syscalls like this one > - one which converts the rest > - one which enables the architectures Agree. This one became too big and non-trivial... I'll prepare patchset this week. I also think, it's better to send it separately, like we did with 32/64bit off_t: https://lkml.org/lkml/2015/12/26/71 > > > diff --git a/include/linux/compat.h b/include/linux/compat.h > > index a76c917..293864c 100644 > > --- a/include/linux/compat.h > > +++ b/include/linux/compat.h > > @@ -55,6 +55,52 @@ > > } \ > > static inline long C_SYSC##name(__MAP(x,__SC_DECL,__VA_ARGS__)) > > > > +#define SYSCALL_DEFINE_WRAP1(name, ...) SYSCALL_DEFINE_WRAPx(1, _##name, __VA_ARGS__) > > +#define SYSCALL_DEFINE_WRAP2(name, ...) SYSCALL_DEFINE_WRAPx(2, _##name, __VA_ARGS__) > > +#define SYSCALL_DEFINE_WRAP3(name, ...) SYSCALL_DEFINE_WRAPx(3, _##name, __VA_ARGS__) > > +#define SYSCALL_DEFINE_WRAP4(name, ...) SYSCALL_DEFINE_WRAPx(4, _##name, __VA_ARGS__) > > +#define SYSCALL_DEFINE_WRAP5(name, ...) SYSCALL_DEFINE_WRAPx(5, _##name, __VA_ARGS__) > > +#define SYSCALL_DEFINE_WRAP6(name, ...) SYSCALL_DEFINE_WRAPx(6, _##name, __VA_ARGS__) > > + > > +#ifndef __SC_COMPAT_TYPE > > +#define __SC_COMPAT_TYPE(t, a) \ > > + __typeof(__builtin_choose_expr(sizeof(t) > 4, 0L, (t)0)) a > > +#endif > > + > > +#ifndef __SC_COMPAT_CAST > > +#define __SC_COMPAT_CAST(t, a) ((t) ((t)(-1) < 0 ? (s64)(s32)(a) : (u64)(u32)(a))) > > +#endif > > You might consider adding a BUILD_BUG_ON() here, like within the s390 variant. > > Personally I don't like the SYSCALL_DEFINE_WRAPx names too much. But that > can be changed easily if somebody comes up with a better name for it. Neither me... Maybe SYSCALL_DEFINE_WRAPPEDx? > > > +#define SYSCALL_DEFINE_WRAPx(x, name, ...) \ > > +asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ > > +asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ > > + __attribute__((alias(__stringify(compat_SyS##name)))); \ > > +asmlinkage long notrace compat_SyS##name(__MAP(x,__SC_COMPAT_TYPE,__VA_ARGS__)); \ > > +asmlinkage long notrace compat_SyS##name(__MAP(x,__SC_COMPAT_TYPE,__VA_ARGS__)) \ > > +{ \ > > + return sys##name(__MAP(x,__SC_COMPAT_CAST,__VA_ARGS__)); \ > > +} \ > > +SYSCALL_DEFINEx(x, name, __VA_ARGS__) > > Given that the system call functions might be inlined, I think it would > make sense to remove the "notrace" attribute. Otherwise we would end up > with lots of untraceable (and unpatchable) functions. I didn't care back > then for the small compat wrappers... Ok > > > diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c > > index 0623787..ab14c3f 100644 > > --- a/kernel/sys_ni.c > > +++ b/kernel/sys_ni.c > > @@ -17,27 +17,41 @@ asmlinkage long sys_ni_syscall(void) > > } > > > > cond_syscall(sys_quotactl); > > +cond_syscall(compat_sys_quotactl); > > It might make sense to add a define which adds both variants. > > Btw. for future versions please add linux-arch to cc. Ok. Yury.