From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933507AbcIENfp (ORCPT ); Mon, 5 Sep 2016 09:35:45 -0400 Received: from mail-db5eur01on0119.outbound.protection.outlook.com ([104.47.2.119]:9632 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933192AbcIENff (ORCPT ); Mon, 5 Sep 2016 09:35:35 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dsafonov@virtuozzo.com; From: Dmitry Safonov To: CC: <0x7f454c46@gmail.com>, , , , , , , , , , Dmitry Safonov , Pedro Alves Subject: [PATCHv5 5/6] x86/ptrace: down with test_thread_flag(TIF_IA32) Date: Mon, 5 Sep 2016 16:33:07 +0300 Message-ID: <20160905133308.28234-6-dsafonov@virtuozzo.com> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20160905133308.28234-1-dsafonov@virtuozzo.com> References: <20160905133308.28234-1-dsafonov@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: AM3PR03CA038.eurprd03.prod.outlook.com (10.141.191.166) To DB6PR0801MB1733.eurprd08.prod.outlook.com (10.169.226.148) X-MS-Office365-Filtering-Correlation-Id: 8418623d-bce2-47c5-aa5a-08d3d5917f67 X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1733;2:uMhBVEJdreOWFeXN7cq6JELHC6j5Sy/c9AD2tMi5LDz0dnzTOCBZlghFSc9gIWhIk+8ATor2K3UEYz24nODo6CGC9D6YqkgHSaksddCWaE6nJydpzu9s4yol6hLf5HOndrwCVpbvTSEuRqfLdJz1bLzCa6h4Oa41zH31ztnDEZkaW6CVv494bDrKVOR5o4tz;3:SyS6YUFcD7RaqBtSdsSn6ZxWcaD68L+TUMLMEJTtC+BoePkdKvyKKUvXnVuEeljFdwPNionfo8wqfDopXQDtNVk1TWKR0FAQNwQI8bnzhdcc3seRS7TEdZZoSQ7hJcQ/ X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB1733; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1733;25:qcw2D/9vZJH4XyDCjLHdpqK/oVLPWtWlD2+0h350kiDdlhG3U5AAgQ2VbhWZKdrciNg7bsnrQDdiCrDaEdbCLWjJhIO1syoxomORw70K8WJtfiJJLVPFVukZ13fQ+K7BUzFgGMvPLjgemn8G0PLwDAHBE6XAp4FLv0bVvcsiQqcLZsomd8FYwILnErwD37ua+i311bN3ahsoAP3sv/no2yJYkOCe0KfrbZJZGxxSYdW/LcyUFOUYQYgSKX5sYO7VQHiRHro4WPQZcUO4m1exyVEtUL3/UlK27/Oz5ttqOyB3AcoHrD+3HU9H8+YBU/UTegYzsU9jZIuriIwe/RwIVABUEbOJZ7fIIg/XVqYO9oWRDq2N26/ZuxSTiGP3A0qcgthXVhUZo1NG2sYF1bccw1Ivfnn3x5p6SotpRK8rY54YuaIQGIyt4NGhZ90sRyDylQlLa1m524fIbyNBG9qP/QrGfYV/f2zf+aTn+/w2B17nwfEoVRqTTQV2KHrCaMEB/O6N153fTgvivwX2KDR9e1RnIeQnG+2d4J5W5AT+/dEFAFq8L0Jp8MxTMKRjXhim1pGjaIlFyogQhSzYQP1mIu686uJZQcLPUhHwLUlBN1hVIKIYvX6t4cPbTPyKnTd24Bfv/ZmvgD+uNfwfTCynLmG44IcjtDNgfm1iAItXjOtNXnXKWH5cJTOHkLdvtR6bUgKcdj48kVNo2mHHGaIAVXz6b4OP2JEvjzNhlE+AgR9kRKeNfw62nQPkHG0vWnwQ/aibiR01lU746XpW819KtFH3JiyMeNuEbJFcL4f7Z3g= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1733;31:xxu3j2bknYGNbq08KxXqzNl1qqHPiZ0zeLE4XzxGe4NwXBRWc8deQU+Y9Fchkt3rxo07P9GzwWCOvqxbTBh4BETCyoAC34jBUWgmShMW2DU9Ai3NUavDd4+FVDqISrQsnjV+p2ej5aRlYZDwYKRhA2N2xh27Qc0OiZoKihxU2h4dQpBiVhAP59WQAnbuGMJyrSNec9tmZAZ6d5CzsCAJLpFPjasAkRsxjpmCKv28xkk=;4:QRNwQft4nCox6PghDrGASKpT2wxPeQ9r3ttkBaeGgpjnP8UFZK2YJLeWnPQhvx+G4ZO5/C9YJdzydhHwRtLJgAsljfMM7h875nnaBbgD6RkrpB099yfZblHTqioLIuK1u930Zppbsd+x+KOutVXh0WEXMJRMtDpCpzyh96SPe79mQd233fNxjkbcwUaxcgvH4UdnLhuVHozhHX+GnFZyMWxtYtXkoW5uBr9F5ey202V4sIzMi4ICLSTE4GXnwH8+/pb3IoZYYjvC4nkuCyKRrrNVUPSrPSRu0kVCoff9AjWpRMO0n1b2R+YAIgxmA2uZxFi9QkkNn8F4HAT8f1FTspPYOvstwaThKGNSR5sIFewJVH1JpzGZS01p+foNWU4erCvp2K2Y/g0M1rk3VTwltJF2/IvHSWjnpx15JtfbBfrbE08kPaZO0Eyf6XDmFOodqVydOQDG6Clb7cf6L3a40A== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(42262312472803); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6043046)(6042046);SRVR:DB6PR0801MB1733;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB1733; X-Forefront-PRVS: 005671E15D X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(199003)(189002)(33646002)(2351001)(50226002)(105586002)(106356001)(76176999)(19580405001)(4326007)(586003)(5003940100001)(189998001)(69596002)(50986999)(2906002)(305945005)(66066001)(1076002)(19580395003)(6116002)(8676002)(48376002)(97736004)(7416002)(3846002)(110136002)(101416001)(86362001)(7846002)(36756003)(15975445007)(77096005)(7736002)(53416004)(81166006)(229853001)(81156014)(50466002)(2950100001)(47776003)(5660300001)(92566002)(575784001)(68736007)(42186005);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR0801MB1733;H:dsafonov.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB6PR0801MB1733;23:vlY0chKIOhIVfdNC/SQjVy4/ej8JWXu8YP2PO8F?= =?us-ascii?Q?Y/QIpWuk0qTn+FqOEqcOQf151PzzX6KB7hj3jc58t3JZ7MGbjYxThQf/7Zk9?= =?us-ascii?Q?MbG+z+bbtGHm3s6XxQiuA10yyu7tMufFPK9rvRz5s+BD93Rhbrae0ROqFhxN?= =?us-ascii?Q?vzTmwHv/qNkuP68belFvzjAaHvkmU796pXkZtETMvbDQElOO0IQTnmx2SaHo?= =?us-ascii?Q?ynJZUG3J03y2a8HZ71JoR2e9z0c6dcIu9L93aKoSEI1/1/VBZ//PLJgrOqq0?= =?us-ascii?Q?bfwH3/GqdmEuff2UjAHTVNZcY6wt0+GpCZKtPK3BZ8TciX/AIDwul9F7b+ay?= =?us-ascii?Q?bpQ7lN1bl8eR3GPqCki2hhL+9TY7ojlcwX/kyiepUYOtrTY4ITtZk+Pq6wqN?= =?us-ascii?Q?xR5QUBB3SfaLcmvGpyzG7/ViCrpdq8GR9GP2Pxqvq2rT9Qklcueg+xW47eV+?= =?us-ascii?Q?BkSRdkKbBFdAg2XCLFJ9hEs9PfXdYuqpstCmKkVY7OV+KzjqEaaeue+w/Qwi?= =?us-ascii?Q?0NbdiU8kPBRgx/tLAKooeMdzsGSFQmCnb+8pracIRUjefA9b3X4hbUqXf50Z?= =?us-ascii?Q?YAxRFSLtcSh3lpS6S4pTjY82qtXltU7g9oLCpAWakjBuRRVdT18WgSoCMr4+?= =?us-ascii?Q?vx/wVS3qS6LxFKUkITCAFusr2X4SSt5+xibTDDD/EQxRr5ED2kWnWnGKx4AX?= =?us-ascii?Q?duyVvqnP7PbDDLhRjTF7l06nBT/BYFaSNNPI2p8UsiIODD4ZL+dFcE6ICMK8?= =?us-ascii?Q?7MJKbBeZyaWNmLHos3bjZvXPuRu6fPtgG7YD29IZyUhcatNDI8IsUkNqdcmA?= =?us-ascii?Q?zPwJhF87TDNSEkpXRLd22LWtTdksh3pBUxzTDtdW/N55y/OwkFrgFRvl4DsQ?= =?us-ascii?Q?Xk1D/4DHe9Rqs4qtgKZCECmG30ZO05kKbwouDffroymx8xjIKVCnsPlN+rT/?= =?us-ascii?Q?cQNDS9oV8a2msSYNRL4s+v9jjP9QSPvc2xy+lLR+sZ9bgYjXx1ZYwbjYBGaG?= =?us-ascii?Q?kv72y3KDx41QdDE/1sP0dfF76LxYgmeD/zBuH8xhUy8nmxRSScfCaVLQHOq2?= =?us-ascii?Q?y1zPvcTYZU/7s+RBto6IL8Nq+2+EYlUt9vTWbrhkgDqQECYiDV5WE7AjdvDv?= =?us-ascii?Q?wY7ATsf2IIvMi8cVMkoNRqf5kqx8I9XQLY2JmpK4rarli/QDzEjK98jcR4KG?= =?us-ascii?Q?KUrLZZkZswqODvHIjzlPScvLY27nMjXmscXg+zPIxDqD6Vl6Av60NN+qMFA?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1733;6:cDov63C+CpHAyIweJYP+sxP6NjjtokGdEOUZ7u32y2SOoJCDR1yvIj73NqZPEPUnOb86Hnc8n7BGJ/Es/spRpP/t7vmxpRM0QKRIw8ZeFwqZX8uWdvCwQ/BEEv5RLmNgDf+bMSJatJ/FGjnG78SDOyfwEqT0GFTfjAGUn1T2YbRf10IcEZOBQRDbOsa9zMKQA8uRscQbOjbGAlbozfshVPwG4lnNEvjak+wpKCu4ANNJCYB1KKI/zlSrwLxx+U5KigbPnUFE6V8pxOxHchb1EALR/+4QCT53QwlUKZNgAie+p3wHxA/5lwy9HLvqUtvU;5:VprpxM5BCQoXhC0C2o1KVqxbNKNJzZHqlg1X3aK8q8FnHK3HnypQ4qvrPwOVBm7Y1tFHdcrCHUWgy3xR5mqG1EolNOp9/cqlN6antFlt/76CQpg78woj/u+cPgFtxFaI0kTw9sp9JUHO86z630oUbA==;24:igYEV8UMHZTfgNcjEP6Zy7i0+MNgYUaecRYPvoUI0vQCtjB2Q3H/osqXceLtilV0Qpmwlvke5OS4K3tjB2/Gbaot6VBX0UPltwElX08YUac=;7:EH2EStTD/3V2N0m1D+1FyNcQprIiXl+d07PSoM5RmmM6MIA93vSjt+ejMxEtU6TLXqkl6X/S2T9GDu4QtAjBAlsj2wXHqU66pT22qfc/aRTStGGgoODiFa45yoyvwfDDFAD2c3ZSeNhUFFMVLLfPYLUAenQoZZwJOuAcBxZ7qciIIUGQ93jX/T1JpXvcfe/XtECohBhREsZqp1Qs7RGakWwXw7YA5SaIMEVPZvBIVskXyAHdDpWXp1wIFwg7cR78 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1733;20:5NEhg5FqcOtu8wUpd7xeTQ3tU3zNPopj3dKJOTYN3M4mgbHayj+HXQde92Bt7H6fu140C77qtgxDUIgXQpY9qqtA3O5881DzAFt7xOmTA1AM5Xaqtjv7otHSt51Y6bUHtsKXLXhME6TaMRhDil9xCrz/gEC5Y+ZOo7RKMXdHus8= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Sep 2016 13:35:26.3487 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB1733 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As the task isn't executing at the moment of {GET,SET}REGS, return regset that corresponds to code selector, rather than value of TIF_IA32 flag. I.e. if we ptrace i386 elf binary that has just changed it's code selector to __USER_CS, than GET_REGS will return full x86_64 register set. Note, that this will work only if application has changed it's CS. If the application does 32-bit syscall with __USER_CS, ptrace will still return 64-bit register set. Which might be still confusing for tools that expect TS_COMPACT to be exposed [1, 2]. So this this change should make PTRACE_GETREGSET more reliable and this will be another step to drop TIF_{IA32,X32} flags. [1]: https://sourceforge.net/p/strace/mailman/message/30471411/ [2]: https://lkml.org/lkml/2012/1/18/320 Cc: Andy Lutomirski Cc: Oleg Nesterov Cc: Pedro Alves Cc: Thomas Gleixner Cc: "H. Peter Anvin" Cc: Ingo Molnar Cc: linux-mm@kvack.org Cc: x86@kernel.org Cc: Cyrill Gorcunov Cc: Pavel Emelyanov Signed-off-by: Dmitry Safonov --- arch/x86/kernel/ptrace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c index f79576a541ff..ad0bab8fc594 100644 --- a/arch/x86/kernel/ptrace.c +++ b/arch/x86/kernel/ptrace.c @@ -1358,7 +1358,7 @@ void update_regset_xstate_info(unsigned int size, u64 xstate_mask) const struct user_regset_view *task_user_regset_view(struct task_struct *task) { #ifdef CONFIG_IA32_EMULATION - if (test_tsk_thread_flag(task, TIF_IA32)) + if (!user_64bit_mode(task_pt_regs(task))) #endif #if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION return &user_x86_32_view; -- 2.9.0