From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758798AbcBXSf1 (ORCPT ); Wed, 24 Feb 2016 13:35:27 -0500 Received: from mail-bn1on0084.outbound.protection.outlook.com ([157.56.110.84]:6272 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753232AbcBXSfX (ORCPT ); Wed, 24 Feb 2016 13:35:23 -0500 Authentication-Results: de.ibm.com; dkim=none (message not signed) header.d=none;de.ibm.com; dmarc=none action=none header.from=caviumnetworks.com; From: Yury Norov To: , , , , , , , CC: , , , , , , , , , Yury Norov Subject: [PATCH v2 0/5] all: s390: make compat wrappers the generic solution Date: Wed, 24 Feb 2016 21:34:09 +0300 Message-ID: <1456338854-14901-1-git-send-email-ynorov@caviumnetworks.com> X-Mailer: git-send-email 2.5.0 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [95.143.213.121] X-ClientProxiedBy: HE1PR01CA0037.eurprd01.prod.exchangelabs.com (25.163.2.175) To BLUPR07MB610.namprd07.prod.outlook.com (10.141.207.15) X-Microsoft-Exchange-Diagnostics: 1;BLUPR07MB610;2:R7U3C8LqiMl/AssghjZs1hrUPfiYAGqFIqxYzI6Cxq1daqma5QV5ANqedLjWMtNKa1iVF6Fo170Z+PNZNT49xwrphctlH5mS+75ubGJGExosujYDwzGVej+p9EKsYV6bYKlERm0C0PpgPMDjLrdtww==;3:q+kPPPqpAW14WiueH8tGc5cpCkHbo8Z+3eGJZfPjb6Kfoknh+IOu7kry34wie4QdvRy4Qwfstiu7ti+EMuAY/nGTHrEUc4sC3RRiwBq198xObyzdJ5zEKJlis5xaRrP0;25:nz2Za6xO2RveTEkHfMkWeLlru4IesDA8gR9VLXO1LHvrcGtfX8YBUONN8GHwYluaiXnqtW8owwDMJ9E0sxjGavq12xZf2PYEH/qhJgJUYSYNkMBEbU+iTw5nlVA7SZxS5o3P3vDlkxkCIDfMqfnsBXV6tCUT/g/Twifd89tah4XY9d5ulN0oxg2Yv1XH9mNnefsVYwr8cnKh/1pd11m0D2XcWPTcXC3zKfiOZJkXfGxdrGp/svEZLAT/f0z+IrOto7nAOlZFP1TG7+4+MNFM1PLnCzaULxxQsGxKIYJVZEYpNDpXT1zr3TcQIlwZrYbd28s6pTvQGW0X3/m1gW9e+A== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR07MB610; X-MS-Office365-Filtering-Correlation-Id: 51a44843-d39b-428e-5f72-08d33d494012 X-Microsoft-Exchange-Diagnostics: 1;BLUPR07MB610;20:pqfTVh/teQmKCq9sUwj3SFvT072RHzKeBCNaZRH8HI9arYkEZu4SC+fKw4hG0DWBUEbJhQjXkv3vpF6ZLRfhfBB9w0h9ptyD7Axh+gqvQsV2LZDVRS3bBhfFlrd3xuWs4BPyLLhcNA+L6z2BUnqXSzZ5S06ojb7Qf+6Pg490V8YNvVnejjCQOedgrCt1nh/KNjIlamVWOCtF4RY4OWCFkjUfYJBgu7RgFZ8ZiG9p2RzxIHGSF7o3oxLo+SYgoKuNFdRS2gJNzJ2LzaqaKwu+PiCPW4R0mtRk2HOdCJJWBSVGQpR3V72itN6RwtUmgvTxAZWoNTZ7W6o0qgBcdlXAwzgoXyQpFLbnu37FP4+8WN34KpikA87gUUrKqKoVTmoh22WkGRxT4Mmix77bGrxe55m2xex6zDT9wwph5wNCWk46xVNohJSFS4AucOgolmuXw+luyw5nqA3zlSk8Dv4AHJ7o7BWGeBo8iSmO2UjhNyaMxMug5IxHVw8XraoG5FxWenyQb33Z3KzzXcc5jlMyxczODv0HDylJnAyuRcEqkL2rZeRv8mPDnAQTVW6yIUyDUulYgXvU2maJrJPwT1nNJJXInwHoLVE8APTDrvcBq5o= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046);SRVR:BLUPR07MB610;BCL:0;PCL:0;RULEID:;SRVR:BLUPR07MB610; X-Microsoft-Exchange-Diagnostics: 1;BLUPR07MB610;4:6Iog291LT/zuy+VvNcFCUQX+8at1dvpriyHR64HMBYVTaQoGrgqbA1XYY0RfRtEOEbB6UdozBT3LfxM9bxYH4U4HDqtDGPsg74Frx7qKwiXSVZnIa2xSBgXMM1wZ5deFhfkXwLki1nnnQ71TaSOpb9AdctbikVGsKKH1CX79kslHlNBZge3gg+M2sRcIZ6WLJ2OUwUaw0ulGoUZM3szWFHZ9kdRT7JWSdC6rhZzCHsHUmM5es10Bjz7B36n3LH4o2sxhLXdqxi5BFa8cTcG2+P0I5Lt1CmBoPn22s/ilXHcvKogyyuXPmGUKuDWdO82Y/cmMWu2eksjrf+Uz5Fy7AhXoG3XMAQ5ys6ze4Ob+QGpsQ/pV8bV8NaP/KOIJ1EMv X-Forefront-PRVS: 08626BE3A5 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6069001)(87976001)(36756003)(2201001)(5003940100001)(122386002)(76506005)(50226001)(40100003)(33646002)(50986999)(189998001)(42186005)(47776003)(5004730100002)(5008740100001)(229853001)(66066001)(586003)(6116002)(92566002)(4001430100002)(3846002)(1096002)(48376002)(4326007)(15975445007)(5001770100001)(77096005)(50466002)(5001960100002)(19580395003)(107886002)(2906002)(41533002)(2101003);DIR:OUT;SFP:1101;SCL:1;SRVR:BLUPR07MB610;H:localhost;FPR:;SPF:None;MLV:nov;PTR:InfoNoRecords;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BLUPR07MB610;23:YB9EtrUINWRMN0Kvl6C/odkSo5Q6/rwlCwmyrcTYAC?= =?us-ascii?Q?zA/MdWcN8cmgBh5Ub5oqjYkRJRT9GznWmLyjLKdGVv8nhu2B5E0wQkhOsbf7?= =?us-ascii?Q?AcQ3x/m/Qj0UluSd76I1WwppiWBKD3B+LkBRfq6M8h5XblBcS8tYWs02P1wb?= =?us-ascii?Q?2Ldz9o2+KpDDErKF+FTm1dPcGtFu1CfVNAmymINTyTYBEYQW2zBKYa1266On?= =?us-ascii?Q?77smOgm5ch6IVcgTteYEau/fFNVWqRnGYIM2G+zwvCJTxzXtaPTOxDcAmruS?= =?us-ascii?Q?mwxMwOsIHDK8fAbWEZ2yd4/+y/n05p0EuLh0a6ED8vtmFcVjAbgDVkJazzvl?= =?us-ascii?Q?sfcyn2uvUg9bVTp5u2e08+AgfRS9S7+NW1sLrWtaKr6O4BHWqmBRGkNS08yY?= =?us-ascii?Q?S5JqpvAd/qQ7FVKcKbLirNUh9Oiubh4qXLIdWclqzHTTeKjXBCxgr8y96oxp?= =?us-ascii?Q?myZMd3CxJem9o6IAH6SV1PdKLS/rQVG26ZXqeKo54q+nwSqZkjXGU42Yzz89?= =?us-ascii?Q?MgA3YcI2j7ADhWglF9WYIudeEHh8CLVjUCMivt8Oy5cd+Dkk5UPzdDGK/Iv/?= =?us-ascii?Q?fwMGKrBpQAS+5x60LAH8+mUDmCGV8WXKlzaHhdOUPQUPMPy3s+c2AZoMyxWQ?= =?us-ascii?Q?yhTOru1rm3G5J4ZUvHQbOO0BxtEQYwY06Pwt+1U+6AggDi1l/p9bzx+cHhsV?= =?us-ascii?Q?+nGLuowLHpqjcEMsv/4X21LXNh9rO90yNTSEEH/JnYgZfDMuRUj+d9ZgeMTt?= =?us-ascii?Q?mUhMf0hZyjxnOgiJd6iYXtXmP7DV5BGlGYq0TU+j1go833SAaSqqmrWPE8jy?= =?us-ascii?Q?znSvs6ZfZueZEMA0GymEmtBEYicCkpVR7PtZDulMXhkWccEUSUNET15SnSoN?= =?us-ascii?Q?lyNy8b38t/v8Q882lvzyf4+6hJpkNcMDCf3CoKlx+xCDlVPRn3HYO0pYuRvj?= =?us-ascii?Q?nDcJEOPiabjJQT9FfrpNfpB0wpOHjXxl44WZE5KqtDOeqKSbAYQWYbZxsFE8?= =?us-ascii?Q?dDAC9mbfvMTF05n1X8y/vO27rq2tRiXEs8Oy2IsWtP1Q=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR07MB610;5:KD38pIyMcDGH/i5Gydj6ycymp2C4SR/p1HRR4Pu7dPWQugGgRXg7fyfU78TEAtw5+7661YiZZHfDfjMV1RurLI8eKTg92OJn6vdf+5EkobDsoZ7WoAcJprMrv0cuUp4RqGrL7TUKxYAHqWe7hpAbYw==;24:sl43eC56OFg7xB/LQoxP3W2VY7f2m8wSkNDZCMXnw2tXIPPZzpnuhjd2urvEx2z3T0LuU/OB7WQ80glthBQZfCPfSZWs3784kALaOE2WYLw= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Feb 2016 18:35:20.2005 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR07MB610 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The problem that makes us use wrappers is that some compat architectures allows user code to access top halves of registers. This is not a problem for syscalls that are already handled by compat code, or for that who has types of the same size in kernel and userspace. In case of s390 and lp64/ilp32 the problem is in pointer types, long, unsigned long. S390 folks already have the solution for it. In this patchset, it is turned to be general, as arm64/ilp32 needs it too. This patchset is created as the part of the work of enabling arm64 with ILP32 user mode. See details here: http://thread.gmane.org/gmane.linux.kernel/2126946 This is the implementation of one of two possible approaches. First one defines new syscall handler declaration macro, that creates both compat and non-compat handlers, see [1]. This one declares all wrappers in separated file kernel/compat_wrapper.c Build-tested on s390. [1] http://www.spinics.net/lists/linux-s390/msg11593.html Yury Norov (5): all: syscall wrappers: add documentation all: introduce COMPAT_WRAPPER option and enable it for s390 all: s390: move wrapper infrastructure to generic headers all: s390: move compat_wrappers.c from arch/s390/kernel to kernel/ all: wrap needed syscalls in generic unistd Documentation/adding-syscalls.txt | 32 +++++ arch/Kconfig | 4 + arch/s390/Kconfig | 1 + arch/s390/include/asm/compat.h | 17 ++- arch/s390/kernel/Makefile | 2 +- arch/s390/kernel/compat_wrapper.c | 180 ------------------------ include/linux/compat.h | 278 ++++++++++++++++++++++++++++++++++++++ include/linux/syscalls.h | 57 +------- include/linux/syscalls_structs.h | 60 ++++++++ include/uapi/asm-generic/unistd.h | 231 +++++++++++++++---------------- kernel/Makefile | 1 + kernel/compat_wrapper.c | 170 +++++++++++++++++++++++ 12 files changed, 680 insertions(+), 353 deletions(-) delete mode 100644 arch/s390/kernel/compat_wrapper.c create mode 100644 include/linux/syscalls_structs.h create mode 100644 kernel/compat_wrapper.c -- 2.5.0