From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754714AbcH0HAL (ORCPT ); Sat, 27 Aug 2016 03:00:11 -0400 Received: from mail-db5eur01on0123.outbound.protection.outlook.com ([104.47.2.123]:62179 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751734AbcH0HAJ (ORCPT ); Sat, 27 Aug 2016 03:00:09 -0400 X-Greylist: delayed 47211 seconds by postgrey-1.27 at vger.kernel.org; Sat, 27 Aug 2016 03:00:09 EDT 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: [PATCHv3 5/6] x86/ptrace: down with test_thread_flag(TIF_IA32) Date: Fri, 26 Aug 2016 20:13:16 +0300 Message-ID: <20160826171317.3944-6-dsafonov@virtuozzo.com> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20160826171317.3944-1-dsafonov@virtuozzo.com> References: <20160826171317.3944-1-dsafonov@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: VI1PR07CA0045.eurprd07.prod.outlook.com (10.164.94.141) To VI1PR0801MB1741.eurprd08.prod.outlook.com (10.168.67.19) X-MS-Office365-Filtering-Correlation-Id: b88a0888-258a-447d-d963-08d3cdd4a41b X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1741;2:yJqmJXyKkI7iBLm9kK9ag1b1IO7IB7He8+LlkckCDAqG434x0hCYN5hjA03aRrOLgpGE2ZJXQvAM7NglSt4u/i9nsnwVqziVwCSBzYV7MQ7ppCojqxC+Jhns6YkxLxuralcUyRK+P9Z8QR4IXuTNNdNiMPEB9FeU4S7hczpj1NI21b0EVk+gp1caRmIx/G9g;3:OGQDTy5iSDqMbgNpHj+rhwhRx6SMemm8XTkkS5S8a1BV+gicELXSSREgSEzFxEb+gCMxfykUxNjfgP9qyc8PTBPPzlNr/FKrUKc6+NNYWamK9bvIVyyeq2IHreMF4cPa;25:GBk8oWD1hzJg/1yPeVwTtyMfxXQPjSXvTznnmXq/bwey5ntGGEJZ4IYM6Y5DqFt2hLqKQGN6vI7jo14QZ0YgvlqN+zW57C/JYQnIz5on+TKrQhT3xQQEBUdtjZu9kSdS5KAvA6Fk3zXOzcxQijuhbk8CZRhVEVrF43h4/aY2RKxatz9anbLCwLD+HTOs3QC6Ox8Uq2Jt5LbfAiOzliw80o3F98C3fWojZWHMsy/wgc48KplwczXElkKKV7eqdbF7/aUs7QJQY7QglGClVkMRG4qcBv3XujFMM2gsdVrl2JOjGZd7wfdDKQQ8R7/n1OBmEnoWLE6PFy6v+LEtYmy3VLeSgUXyuq8U4DLInIZTIwRN55vzjhvwBy1zgeL0t+lW73YN1N8TXakUwpBANlpCDvnDfIeU7cRjhH/XZ0qWk6c= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB1741; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1741;31:gk1lh21ArEpbNCxOZp/SUjo3iA6dahjExWznA4e6Mj3IkEKtHNX3cHlW0zWjSXEWCMpdBxuXsyuYLJrb9YrXPEg+w6JEDeYppv3WKAnmBzkemMwdCIOYNWq3VtRp3YLq1JJyd96fh45zdx3j5XRfdU8zsO55BxDItLMoRfZK3Fk0iU4cD0TCBy//vYk8Ro6C4ty99QbBv1Z4jIXV30AkdiEBQJ/iBkWuzb9t7uqgGqo=;4:SsrzDYgP6RdL91zY3veCVi6HWTKDfdmf7H1lx7vvjX0Un+Vbcnt/oDRYOZdy+GN2HFJ9cfWTqu2vRumd/yaDdl4xOqu+d1jf8GdI/OKnM8ruLUa1Ziy3MjGq6DbqhLIrFVfZw0/wsy/65dSVQF8Ni/RfipJ+6Zq//s3frKxUfOTJk8iqypF7REq51+wJ0AWMelw1B5XvJfUF225jAVHGW+aOq4Q9joUSpahuf5eOtvBr3aM9qePdPgg3eH5XXzxa4MTQSj8/wFtDgSrYgpVI0Rpjf3PJ20A7mvyTymY8586S8Vanq/RZYBm/k0B3vLgi+gDqa4zbzTht1kzS2tDA148jMEGV730fozae6I07YOaBprNcl6tEWMnMK5AV+ASnBtTxzJ4MOaYg/wnAILbMy68YClEljwBqmirfghRB36l+u40670SQRA60dZ708mVxr5mu1wA1sZInbZaKpq5ppA== 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:VI1PR0801MB1741;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB1741; X-Forefront-PRVS: 00462943DE X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(189002)(199003)(8676002)(68736007)(7736002)(7846002)(81166006)(81156014)(305945005)(76176999)(50226002)(97736004)(101416001)(1076002)(110136002)(189998001)(36756003)(42186005)(5660300001)(7416002)(50986999)(50466002)(48376002)(33646002)(6116002)(3846002)(105586002)(586003)(47776003)(77096005)(106356001)(15975445007)(2950100001)(229853001)(2351001)(66066001)(2906002)(4326007)(5003940100001)(53416004)(69596002)(86362001)(92566002)(575784001)(19580395003)(19580405001);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0801MB1741;H:dsafonov.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;VI1PR0801MB1741;23:zBlt2Ymo0KHV5RLVlbbwaP39KZelerEbd7RTcAy?= =?us-ascii?Q?UR5X11peJTSlqfCgD1noiO6lrb+YdmpaMbglecB22Ij23FW/vCm1OWBClMnj?= =?us-ascii?Q?CAcvuFGimOY7VRkg3hKylEmO0TNuhsUB1RL52nCDUqmOz5BgbOTjpHtwZFnO?= =?us-ascii?Q?JA4wat0uXzzM8OtM+d93XoXDhSvr8wzj8q3xNc+6NbangzjYH5PmtYQHLOpo?= =?us-ascii?Q?krmbpr5dBoIPvyqyRNI6HRqCGVwGzmdvVmtZZ7QILcvB0QMHWa1fLFRpR71O?= =?us-ascii?Q?g+enfRvOZ++RFgec0T25E+d6C7HIiCdSmHa/VLdus8htWoa9/ZhN1MMdJLZj?= =?us-ascii?Q?ygf+RaikTic985YaB6Adk3IsChoVvu3PevIegEJXXGrl5pIdnYgvxN+zgRMD?= =?us-ascii?Q?BA8QsYLxcJLyxC+m6vzZtJMcFIi22ZUPwR3j5tI2suFi8aRrFPkU5P83HzsL?= =?us-ascii?Q?7DsYkS4bz0f+wV5dsH/6ASyGYaDIuyp2ZD22K3fmnufFn64xJGAWmqxhPmWD?= =?us-ascii?Q?n8/anVIJrJTGmnNC8LAqkWhirdlSR0toqYDcbez5wYcfeUJKUKpaI3WryMv+?= =?us-ascii?Q?Ew7ZEqv6OH4s7yqBgmjheB1quxkzODKCirbzx8wF0Ifljx4PNqQvJAVS5+fk?= =?us-ascii?Q?WoMJRWB2UCF7krUEUoFFdShQdom4uRwJxrIu8jOOm9Uc6KyhDDwb+CnD88H5?= =?us-ascii?Q?AqhSlFazwL+V62eycj7YBU0W+ix5yviW9/Ql2tZDt6QQzE4sV/PHwSGTolYK?= =?us-ascii?Q?2rLRHzITpLlV/wQngkrRqAJK1+ni37W8nomQ0okh0pABwwGxHern8o6FTNUM?= =?us-ascii?Q?JXx20Ypd9J2wnXMJWJTNGQJIm62zCOUBWyB/vf7eRCkOvwi0hilQtsinemeC?= =?us-ascii?Q?KwwIqQgvTiP+l+EIxgafyoAvobnfnI8dwKAPv7fAstCRXP8GubJmm/D3++5v?= =?us-ascii?Q?pB/Xc4FHQXQOQDN76KoVpK4WLGxXUtvH2zYjRP5FDnPX1MjM9bfzqq2EseTt?= =?us-ascii?Q?kHZ91WTjWXo68fXTYqe8UuYMYoVJsKsSlE17hfyurpiag0stG1hTlkkKkrB1?= =?us-ascii?Q?JLaHvgcLTFeNEfzvZHAxHi7cXNBF9X+PVjWVjRGIQd1m8NWf2bTS4f1O6WPx?= =?us-ascii?Q?oV5IaxYnC2xMO/sEn7s0Pv0TkZ3tBYgZIOZEm6jJYZFawlHZW/tn7CT8/dL+?= =?us-ascii?Q?lp2q6tltYSrPsSwUZFIsfGsyTPreQCy5Lqb7vJil6PUHmYypf4gerydBP8w?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1741;6:2Up+epSfSkjWUg+1S6sx15zc4lVABlGrAoa7z8OS9moY52cITAC4r1ST+SPomnAMppblAysJZaZ7Rpx0C7evDJ73FKL91+5f/SLua1Nqi465NUHSGWi5lrmzQ+cBIpNcgR6sGIHWdEq14jRNxF5NmfU/ALHEOCV2Dq+RnVjWNIV08jmO0ud/5WJBf/kjxPizuPnYPK0zBc87Fv7CXgiSBYIAc3BDwqrOEZzsYvXqz8azvLFcQZklMdhz9IgwTtMWZcoEETEvrUrK18CVxEmnfsU228BHRuF3SVv6v0BtPVKSh3fvVwD3WVMb+pDTVc2j;5:zpM9zgAl0su57Cv/PuTiFjQYe6x7T2qDUMLLNAJz4dftLAaZ87mzPlZYWyoC9LQR9QzVRuvTDnSGgUzEO0iQTYRYYBXUdk6Il1gHQvmm9gqteu3hBR+Uwy0kyjDN8cHUilsMLs9Cih1pBuyY/9d9Pw==;24:W3o3O0VmMVdRBbrFK3D1TRpxyKeyc5oLYKUKSHU5OQ57bnGfXcSnlfpmf/6ZpcKl6Q4cmGvC15AqWUxcSfnDtjR92ntYDy7ZYgCouyHC1m4=;7:hiGFJO2ECwlQ1h4+b7ktzPDcmS4qfeMSo0MguOm1GzYm7PyBikbPTzGNZR0gz7psVWte2UBf50Bh0oz7k/rfi/8laH4DH8qNwom3BVm+nq4ci0kCiK4XsamWow2XOVnhUhrn7iY6ec+jgAj/esavIZV8HS3i6lMU8d5bSg1AlWI8xGQXmeCaPeItK4ctOSE22XVD//UNF2WyiddplJSQcPPPlQ4VkgwC+W3Lng1VVrtIWn/9CvVjZtjCCD1aWUvH SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1741;20:xlNS6qlfzARoyk9aSw3iBN6Px+9PoXDfObt3qkGII3CTshus3KTFzSU82b/TWSnlvdAn1QlrUTQjY9VUMAmXK0WpK6o89Q+/1UMP/pMyQ11bkcMm1RZPb4aVfbfeKnXjCxTjMCPLEJi3MKGjKuQWaoCNZubh2kbPX8QBPWlVQY4= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Aug 2016 17:15:54.9412 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1741 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