From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752299AbcF2LOH (ORCPT ); Wed, 29 Jun 2016 07:14:07 -0400 Received: from mail-am1on0135.outbound.protection.outlook.com ([157.56.112.135]:35904 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752240AbcF2LOF (ORCPT ); Wed, 29 Jun 2016 07:14:05 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dsafonov@virtuozzo.com; From: Dmitry Safonov To: CC: <0x7f454c46@gmail.com>, , , , , , , Dmitry Safonov , Andy Lutomirski , Thomas Gleixner , "H. Peter Anvin" , Subject: [PATCHv2 3/6] x86/arch_prctl/vdso: add ARCH_MAP_VDSO_* Date: Wed, 29 Jun 2016 13:57:33 +0300 Message-ID: <20160629105736.15017-4-dsafonov@virtuozzo.com> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20160629105736.15017-1-dsafonov@virtuozzo.com> References: <20160629105736.15017-1-dsafonov@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: HE1PR0801CA0018.eurprd08.prod.outlook.com (10.167.184.28) To HE1PR0801MB1738.eurprd08.prod.outlook.com (10.168.149.150) X-MS-Office365-Filtering-Correlation-Id: 5dcdd91c-97f4-444f-3771-08d3a00c60d7 X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1738;2:hzaT47L3+LUKo5DR3YUdVJMFjf1bOdKtXAIB3KR67SXj+MeMHLJrGJts1Ft08lBCA1WMRBuXwnEpIbsBgI7t1js01uLCj+N6/mOvzR/5bNzQX2pk26TBb79b30SIvZ0gq0dyAJq5I0bvPuw25Y0e2uOC65niB3CaGLIvd9lV6VV2xjXe8GNIEOIyciC1BI8C;3:gpUSUQxCtCAAOuxv1j7qwWgNuidnLKyP/AdzC4+oiXsDCxchhM2YFzbCrQNpHKnkXYAra7gAJK7g5L2XeUFPP1mgvQojmBnNj0vFD/raHsNTR5CZjQ2qwWl+PCqo7qN2 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1738; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1738;25:hazeG+wWC/o0JeAwVFJXKjJiDVl3K10zQPBcYG80470/H/t+AkyEvPth4a6t0oW5zsHPDUXQtpeRuZVsIo1eMY86EU180zUMqVi9dFhQ8G19mbbt8Qa4sziwDcuXHrmrZg7PQzD1/D/P5Z6d3y8kVnWv6baQVAn3SWNljTBoio9BGxgQmWyqRGZFb0isK34EZg/EuBOMh6LNqhg3Q7gQy12Ea9UNIPSHmBs9iqJh/DxFkkkXcLgbpr1RJg1QuEXCMyvBWm5HIse5cEzuh1JAv5bbPRy6FuYy2C8d00ILtBC4th5bbd1FFS8Bdu0UYSAGkA02H21T0vdexN1cBlYNHnCS7iVhSrxgVD3rEqbJHRXZeEt6i3uxTXQIHZNoFKD/uyj3cItNg5r3HUGeG5xXIyO8PiMPuvDqP/A4Xs4/kJFkLUGf2ly79FIe73nDSjEno21zKCYM+/FDhRpKw07HHDK3ih2NZRipFFhRDqeqtNggjgKCXEXQA1DdaSx4d66pmYR2hNHkYJidavndWjrWZ990PLu1IJ6Ew9HAQpZaFDzmzMKtokNFdHXb+jhh62xmRJLvWqQlNagjiUJWQvRpl3fDPr1Vbf+faH73gVzwW5HCplvLAMm0wYhb3ZE/r0DVeUTqNLTs8ukAEp7uHKmZcsXCg5gKzeys4Orpo2h4bY7WZsAP9Fijsd9qda4VZbm6MGYAtAVhTEPk1sadMT9yCQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040130)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6041072)(6043046);SRVR:HE1PR0801MB1738;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1738; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1738;4:fJ5ltbQYWwMtCK2+Ft41OLDe9bhKHXgYfJcbDWAACx9RRYRyx+uHoES777fgtCVBgIQaARtq4PtBNGCu+MPzTu2MLkQzbFqZjNItCfnm928KawCV0B2MiipyzkhVkJnyvvWoNHePPUxzVD4C1wejgsP0L1xyTEGvvftpEVkduUOUfF+hrTp2IespCZNsBg9fowpDmJj50/9RcZUFqAmLGnClLah2xl1cZSyR6ibH8k21jmX4GQ5VxAAyTleepDXzCWZqY8mTcDNHd4wSeDvScBKYgySm8ZjavIh3cPSIijt6AMFgEdWvaYBNtaZkqu5RNFRg2Yz6FRfS+ZGIKxPlLMsd/dbMtMAmivdv7VkMVznLznn1xZVuCUXFd20J0JXHsDjGKEBJvgXyW6VSM1JqG1cF+9RnafpRzON2EKRfwms= X-Forefront-PRVS: 09888BC01D X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(199003)(189002)(2950100001)(5003940100001)(110136002)(19580395003)(19580405001)(77096005)(76176999)(189998001)(69596002)(50986999)(47776003)(66066001)(42186005)(101416001)(53416004)(50466002)(97736004)(33646002)(106356001)(68736007)(7846002)(86362001)(7736002)(105586002)(229853001)(2351001)(1076002)(4326007)(2906002)(3846002)(6116002)(50226002)(305945005)(36756003)(586003)(92566002)(48376002)(81166006)(8676002)(81156014);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0801MB1738;H:dsafonov.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;HE1PR0801MB1738;23:cENQfZ/ARk931FNcmZcDrrkcjpBEhXw0t8Twd+a?= =?us-ascii?Q?OrRN6bbzDutQIgHFODhBJCcAqadGVebmp5JnhK0c/oyRV5ANnMjnYbJ9R59v?= =?us-ascii?Q?XW48zJAN3r0ND4MLf/Jk/tPhLaN7dRG6yiMQBi2O/jPuHyYxWvvi1bAoIH25?= =?us-ascii?Q?1dRJxcbk5qg05ieorSlwSiKyvUb04Wkb+sqlSbOKAClpCIg+nNY6OCrPYiOE?= =?us-ascii?Q?nOHOIr3Q50iafr/GQsmrkRqL/jamW+XvZnCqAuAgDa7H83zb/GICeLSbAO+C?= =?us-ascii?Q?SJ8yPEMwKkGwc0VmJmnQjptnYlcWVPwvIKI1/4FKDOC7N1su3X0v0R7GhId1?= =?us-ascii?Q?qg3C++hvQgsKhfplxYUZ9xM1WE4osmZ5V+qQNuv3voeKKLOH63yrPzMhjNq5?= =?us-ascii?Q?TCu9zoX3T0Lb/zEMVzbibYIi70xpgyJvTXjyctBYaq9fyVYTsRda/7tauKHT?= =?us-ascii?Q?4ijjg/IaBMPC9hm02wRQnsjMPHfSfrb327Z/blMhqVjbAakOLVTq1+T77daB?= =?us-ascii?Q?cvNnvZ2iI463ioTcV3COg9gKi/f42SnZnIVQiaqUZijMvjACWps31l+wyPoV?= =?us-ascii?Q?xMEE07IMGv8DKOhn5cI7PNBn05q/Hl1hVwNy5S9nlS5WpNjPc3Rh1SeNMZUG?= =?us-ascii?Q?+bB9x/tW1WxiV82AExDrlG0TyFx0CeBCPC9OBrQHN9smuvxGo40Xbbm/8NBm?= =?us-ascii?Q?bgiREfoOw1ooI/nIQixNCYbLTKTYd4kc/ur0tWOoU+GpHhjhyzpTX39VpLNo?= =?us-ascii?Q?Gi/Bctump7p+JDu2kaQ1I7Ay6AsCSXPFeWubQcIIjo45PedsgD6mkoX8Rn2s?= =?us-ascii?Q?B73pGi8sD67PT9LLO/pjwfDY8Z0vYv5XkGhoiggoT/XRq6+Lwmmwt+Q8ogED?= =?us-ascii?Q?bvySmzbgfau75vTl0McQCOhAhTIxAnaIWZDONVJn8k2aXdqrXT5neUjQ+d6x?= =?us-ascii?Q?20oXZ/K2nj+kwZFwXvfnlYBjEgLVH2rb4s+1eowkKL9etd89CHczSYKOg7IV?= =?us-ascii?Q?uRvP6YXe1gaVk342wS1/JXDsMVdKlBPml8JrLmxowsBe96RLXzg0QYvVtQsI?= =?us-ascii?Q?TtK8RMGMv6O1fxG/7uRD/GqeT0r1KAASilWZLq7D+xn7a4rRJpntSqAMNr1k?= =?us-ascii?Q?QMeXa3dzGAC4=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1738;6:FCQ0bCxLsRncQ7OUaQqwOqQmOZ/SKGXg2mz2f3v1mbvEa73tabJMvCr3hIYv5gd55aih7yriwmGWbdrYMH6yNPQsgHqzm+0lnCpU1kqbV+b1jNmpMcpjvIk2Yz99kLFKsaYI+dKgg6Ej48yNCvSsFZT1wR6pyv7dBW+2vDLk9e7XSxwX46oxhoMFGYQlLp9fKAUkHBk+DgepAeqb6izO9/0CjeyGbA9X8z8wnVhmmTWQxF8v/XzFq4OzWj6M1725cidB/HwJZWVn/OuWdEhnZ0gdX5lyJo4z+ioVUHc+OiAqSSBrKeraWVTX+YBkoJbcwMMZ5HPX05UEC39E/Ug2eQ==;5:9HOJ7NT6k6z1Qx8EDbgMP0tY87yc1wr2+IL32jGVG9Y+p+lpJcYpM8P6fdTbSLZt+CnBhQ/Lap3Qh2DJgDkSlgXxaYQbNx/vpx+3dWkBASnWyN3D9sdRD9ikXxgYeB/J83uB6W5xz0CZYtv3V9IUXQ==;24:AJQzX4ET340Bx/E6bdHBkMz6hkDieLkQlVhImxst0IUIdTymLvqRb9hqoyj5pq0gtzWvZpqML91EqIqxcyhWjjgV/sZpG/S9UFLgcJWnr4U=;7:hmGBzrbAHsjqNfp6aLd11Lf//bzOQM/lxIRnk5CnOfFq1XUbIBBBVAwCG6a+Uhk0AMFiqGquZjWIlM7jva19P5UNLRydOY4XtqUJKcrWBjfrO7z3IlCxGmHhQy3P9nIHKdIdz+w23hsdPx8bj3pbFxhTjIUJvtH/B+eCjDWOptpgukFPgzwkqXiE+ZzVTACPabXD0X/zaY4n6KTccLXXNQjBN+GGpqwZb/6UYwjd9ptgGti2JsGfGK3akPAfM1OWrLaI3pKLgikFlCI81zwEmg== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1738;20:9t8LT//TbK3jFI4EfPPWZW5Sx4jN1j4foZJR53L1GrRdl++X0XpzDkTXiZO0devP5zrXBSPPyjmaTy2TuRJGyYJtA+2clOmmVNfEngkq9YiW8trUALsGTrWBx8ijJ8Bn3qx37MRMF0VS1Tc/8AcOM+MAxtoRb7REO8mT8foK+dU= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2016 10:59:00.2501 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1738 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add API to change vdso blob type with arch_prctl. As this is usefull only by needs of CRIU, expose this interface under CONFIG_CHECKPOINT_RESTORE. Cc: Andy Lutomirski Cc: Ingo Molnar Cc: Thomas Gleixner Cc: "H. Peter Anvin" Cc: Cyrill Gorcunov Cc: Pavel Emelyanov Cc: x86@kernel.org Signed-off-by: Dmitry Safonov --- arch/x86/include/uapi/asm/prctl.h | 6 ++++++ arch/x86/kernel/process_64.c | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/arch/x86/include/uapi/asm/prctl.h b/arch/x86/include/uapi/asm/prctl.h index 3ac5032fae09..ae135de547f5 100644 --- a/arch/x86/include/uapi/asm/prctl.h +++ b/arch/x86/include/uapi/asm/prctl.h @@ -6,4 +6,10 @@ #define ARCH_GET_FS 0x1003 #define ARCH_GET_GS 0x1004 +#ifdef CONFIG_CHECKPOINT_RESTORE +# define ARCH_MAP_VDSO_X32 0x2001 +# define ARCH_MAP_VDSO_32 0x2002 +# define ARCH_MAP_VDSO_64 0x2003 +#endif + #endif /* _ASM_X86_PRCTL_H */ diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index 6e789ca1f841..64459c88b3d9 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c @@ -49,6 +49,7 @@ #include #include #include +#include asmlinkage extern void ret_from_fork(void); @@ -577,6 +578,15 @@ long do_arch_prctl(struct task_struct *task, int code, unsigned long addr) break; } +#ifdef CONFIG_CHECKPOINT_RESTORE + case ARCH_MAP_VDSO_X32: + return do_map_vdso(VDSO_X32, addr, false); + case ARCH_MAP_VDSO_32: + return do_map_vdso(VDSO_32, addr, false); + case ARCH_MAP_VDSO_64: + return do_map_vdso(VDSO_64, addr, false); +#endif + default: ret = -EINVAL; break; -- 2.9.0