From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760845AbcHaOCX (ORCPT ); Wed, 31 Aug 2016 10:02:23 -0400 Received: from mail-he1eur01on0137.outbound.protection.outlook.com ([104.47.0.137]:54192 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752234AbcHaOCB (ORCPT ); Wed, 31 Aug 2016 10:02:01 -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: [PATCHv4 5/6] x86/ptrace: down with test_thread_flag(TIF_IA32) Date: Wed, 31 Aug 2016 16:59:35 +0300 Message-ID: <20160831135936.2281-6-dsafonov@virtuozzo.com> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20160831135936.2281-1-dsafonov@virtuozzo.com> References: <20160831135936.2281-1-dsafonov@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: AMSPR04CA0049.eurprd04.prod.outlook.com (10.242.87.167) To HE1PR0801MB1737.eurprd08.prod.outlook.com (10.168.149.149) X-MS-Office365-Filtering-Correlation-Id: db7d61d7-2080-4cba-0f87-08d3d1a75e47 X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1737;2:/0oczgCjn92X1o2oQlnlM71q3wORf7+96iZg2sI8g+jk0nMNsOOyTo9NDgITjO/m2i2q54pESL+pIKsPTDqXiYZ9r62AoRsPD1rT5VNkn7S7NdwZXrpsre6rRNw0Cw1eeIpYNkMorc1ppe+5g03DJyjbvyvfcLjYF5diKsDDgm2saaDzthVhlhvOYBHEhnEC;3:XuQ/c/y4M14V6EAxNyf4MudOLFO902sAUCNmRYowj3j02L6Uyc+yudxsN+NyX77G/0Hnack6RVLC/IZm5fsjZN/duRKbeEy0OU5azp+peOimWSvwhY7EAaJzNabiDYcU X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1737; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1737;25:dE4Vg0/K4JBIY2EVjxjjWG7v9kUUmURBaAHtr1RhJPgToeU6nFoYLH7OP022Ed5d9O1+9bJrtt0/GawIVIy22h4FIuuiWIaBlPd4JB4YPdx14tonVq+djL/ygfdBLS+nLeC3TH5rFt8bZIAj48i0TBBA0Mq7JKO0G5Mf40URBbDlqetX+uAOohO/Zh4wA4DhpRyF64p1RTQqEPs6PvU89NdAczSkMNT5tlG5cooTl6SOidPtI40f2LVxnSnoypX3WgSXs86HHfBvTFWSHktMXCzy/rtuE1XeEZiDroHPlfw6QmVhdOpcCqseT4WFhpZ4/ldDY0PlYqg6/956WjR40X/W+q3zGUkiRK/KIWvfS5TzZEwWbfh2xw1L6PJ+iP8Jz129Cfafks6A4VUFMj7OGxEjY2oFr71RGDbvfsoDOmjPI/s5Gh5UtvGjBG5Ooci0ORGtLfOccpuUcne0wuJBOzz7edMvf7+aoVLL/tPbTPvCO2OfARaNNjVBxsDvfEJl6jSX88r1/9jbyrst4rurkzTtLdvcCh4OYeNZw4AMrO4g8yW9QXqgGNuq49cKB1n3j/ZtNqNwWJ/XDBwqCL6sCGEzn8wjnHGnxLjTSZdyLvcHwXm1iLlniuFiIMOgzhHToa1UeEYFsOae4jFI7vYfMNidxrJorCtlkakW1cJHFphmEqiUlGQV1ilE0q/g5lZJrvt7fzL9DgqMN17OJZ/TfZN3P2ti60+sGc6r+G4kgk2EeRo9P48xuvbkvUa8K6OVNwpn17QrnvyzrIA1dbiRL+/fWHZnK7suQ1A2v0eLbyI= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1737;31:GdKI/Rs2fh9SCWXQmNKfIc2ICrqhGLOCQTWSmDpirSNgXVt2mMjZiZlKArQKb+Pi2bXJ3TD3lt96QLOOKMLnGGo9AGWEX+S8d/j1Aa8HAs/UFGj1xD0WTQAUH/vCc9Ndp/wXDp42N1mXQ1UjDfchrvtnxdtz7eC1P7YQsN3AyFhrvnI/YDVGEPRhZCIn2GK/jsdFf6nsaSPbpo61qDqXzAgazGFhjqBtwF9HC566FW8=;4:4WShAwoR8foGWS0AlL8mYCGgUARY3LgbUG8UsY8Ni1yMk0Aho70VeVhLGALxMVaHPCy0N6zklpPJKfoXONbXyQwGu3TndR/Np3vDP6enLAjXA8adIouWvJkpQzMHqnr0JQlzxONqcnHqhBaiEnn7sSdV6yaoa8UNLN3ixCeyvssT3SaBAMGKraC/+CXFTLYzBWZQ5jHEiZavNFWUY75LT1GCch6bDjNBku459YZtSXUm39AKZjGcy60S11GOGbvHFP2flI6MdlXKLYnMiTOPPN3vD/QLreamvn8bJUevABw7TgoW3WMeIbaAeg0x5lVHIg8kyn9JLg0wzeQuM4EtOmn/bJ2Lr15nZ2RZcepAzF0YOKudMzfWmg4KcZ/UirkGXbW8hImtycvoKCr5SSVGJR3nX0R5P3zwMruy/XLuqhJ9lRILVYNB+IY5fhE/dEXn1N0DFoWxC0yY5xZcRgbN1w== 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:HE1PR0801MB1737;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1737; X-Forefront-PRVS: 00514A2FE6 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(189002)(199003)(5003940100001)(92566002)(3846002)(1076002)(6116002)(36756003)(101416001)(105586002)(106356001)(2950100001)(586003)(97736004)(50226002)(7416002)(50986999)(68736007)(76176999)(2906002)(4326007)(42186005)(19580395003)(66066001)(53416004)(47776003)(7736002)(69596002)(7846002)(81166006)(81156014)(15975445007)(575784001)(305945005)(86362001)(8676002)(2351001)(110136002)(189998001)(19580405001)(50466002)(229853001)(33646002)(5660300001)(48376002)(77096005);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0801MB1737;H:dsafonov.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;HE1PR0801MB1737;23:62wa6/5vuU7gla9KMYAOWzuxfPpTM9EKPZNJ0uf?= =?us-ascii?Q?ziYSFdq7NYjudj1mGCW5mhJXhJWbEO0K0AtB/1mjoLPXHrJws2wAjTMjldPu?= =?us-ascii?Q?hSWN+h7GXP1xIhASxWL8KXoeSYs7GaO4pcbEWcJWz3n/d4hCe8ZBehGh44+U?= =?us-ascii?Q?ZsqzI895Q9Ns7KAuEyExt59/3Fp/dR+WCURsshIC7BsO+7doIcXlxSMygslO?= =?us-ascii?Q?QI5eTkCEs8MJSzUDy2gy82jxj2ibwIyrk/DigawlrjCeiwWiZCTaStXPi8D/?= =?us-ascii?Q?Kpnj7l/PTckIlC8s/SzkuFGmQmfP7hunqOmMy6oanCLRF+cWRZeiqMD8VtxO?= =?us-ascii?Q?DuZdLWed5tSa8GKeBN78G4/DbFfoNL4dp4ANpkt5j2n9kfhUTj3ep61aUGZW?= =?us-ascii?Q?zTkCtUTNAOajPPXoBkiElKD5KFYxW5K1CUOg22AM4KYCf4cBrXIVo1X1lDSj?= =?us-ascii?Q?sA9fL314ZpTaNJ+bv7NVWjuWEKIgLu4HQjXsYWAkjuLQOp0JXE/VpI0/ITIe?= =?us-ascii?Q?EfzSMulyUspY3dZo6dZkaCr/gYG4cJo/JG09asnsCJmZAR7XG9Q28/vM5dcY?= =?us-ascii?Q?zIki7NTfWB8/30Xe+83X4SCVzeyib14aS4UVGBnmB4Xw3ZL/z7Qd9Er4DVSf?= =?us-ascii?Q?bXWOalmcwYMTZTsea2buQZuQZ+xge4Cs11hFB3U4YK2vudYeHRafi1prsfgZ?= =?us-ascii?Q?mOBfi3Ff4I9YlS9ewkiIpSZ9l2QJtuvZWSv1iJ0nse49szC1FMJc88X42YkU?= =?us-ascii?Q?r6iZiSKyrm6IA2lSzeZ0JBK34w5549EuvRX6Gsc970z3iEMfQA69IT/7NIbw?= =?us-ascii?Q?NM9Py+le1t91Obl0aYY0YTWjsDdjYBEwS92xRJ2aP1sixRWxe6Ix1zum1lb+?= =?us-ascii?Q?AfWngg/ygzauaWQY6VeViJ9DmndGC5f6YECXAN/d1SUaUbQCc3rJldxGLCas?= =?us-ascii?Q?QFwakAk9zzOU22y2qURaFIZy4NU2yqgUVN8EzXyAwa51ckif4jBqRSLhGS95?= =?us-ascii?Q?6tj9ICtbU42+GCynYU1MiPSOGvI/RGxX4XzCvlYLDYv/KodE5Dwb/kp7L1MW?= =?us-ascii?Q?NsRHnYkxoklC45KKfAz8m7prTWgwBrxcRPHk0xEjdYIn6IjSI+RUE8HsYAJG?= =?us-ascii?Q?eAvEYYkiOpkgfEWgQ1YqVgO8UJWFXXGlytJ6Kx+h8PWfUjOxGlWNZDwjH82E?= =?us-ascii?Q?baIBi/AWnc3OjxtRQOOg2gu3CZR/r01tDgotOCN87JKZPMTdvM7HCbGW2Jw?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1737;6:+YY2P6asFyXLQZII/uwJMq/77C6ur97v5Z9fRotGjRG3eeSNgNg9wHUIAaCCCNN2VZ8eHsHWGXU2lrBdOQ3rLhr6yrNsQsTaKsnghJ8trE2ca33zD7kZun6jJdketUfiuJaiiv93M81DA//TBx1YkL+cu5802CVJTMIvXQSGH5AxTPClpHqzigZnWOchlWUvB6vWZMY5RYAZKkY6wMdFpHOOI4UQl6nkBrEO1niN3EmgcybD9AFO9wyJIO+GLF8l0ThxmWAm9Jw/f6bIMTqBKDKXQ8ZIDJJeFXJlK8awEaVGNqK6/v1nhAzXMQjt5GMv;5:U28cZQJOISVn5W39/y3RJv32vZmRWlY0AQbOjydm0U66pBYyJVj4owEkeeHu0fVBRvZbZh9d8pB/LBTKdqC8vSlBZItUoh1LUsPV3eHoB1vanCck8mz7n10GXNjLIzi/WROVDjc/v1xH3WrJD3+Kig==;24:vCt7Fim94dDEN63MGHW6YoBsvRrf1OpLswBjQj0dF4iUTGoalCsEecUO2bTYto8FimLAXnLuCFEYJqoTx7cYotRdYz5PsLnqg6csE/3Fu6w=;7:vH3CSP3ixRoBJu2qQqtohaF9uJ1GMv3hKcBWOj6rkZCL/72oj4mwubn/pbSs8EZ0CJgMFZi/zx5mK/q82vPCBlpxC7aLk4u011arSOYXAF5hZcAmI++cigfLfgxlYvGoEjVMUUszey56/rm0VVTJvzmv4BQkCG84bAoBw2z3aLYG63+dolwD4AQYi0rTuySWog6D4MxBfnydMkB35yGSCmwQCNolo3JRJGdJ9LNlrn6mPg7X4OhNmx+ySVyfcBTC SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1737;20:dbb+6za7XQdjEWu57sOSi+0LMzYB3rj9MuQ1VgMoJqgBuqbXO7VjopAMVC7uSvBCNHl0LtFBK8RNl+CzMDUdxp4eorKR/sGg7bywA7Iom8vO3SvjmAKBn0wUxNp7JZNTYrsmyuSUa1YRWlv0CZ3mZTJJxfdGASLWdHMkOyoYAyY= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2016 14:01:54.9651 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1737 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 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi0-f69.google.com (mail-oi0-f69.google.com [209.85.218.69]) by kanga.kvack.org (Postfix) with ESMTP id 07B9C6B0260 for ; Wed, 31 Aug 2016 10:08:59 -0400 (EDT) Received: by mail-oi0-f69.google.com with SMTP id l205so13933456oia.1 for ; Wed, 31 Aug 2016 07:08:59 -0700 (PDT) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0102.outbound.protection.outlook.com. [104.47.0.102]) by mx.google.com with ESMTPS id e37si51667otc.184.2016.08.31.07.01.59 for (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 31 Aug 2016 07:01:59 -0700 (PDT) From: Dmitry Safonov Subject: [PATCHv4 5/6] x86/ptrace: down with test_thread_flag(TIF_IA32) Date: Wed, 31 Aug 2016 16:59:35 +0300 Message-ID: <20160831135936.2281-6-dsafonov@virtuozzo.com> In-Reply-To: <20160831135936.2281-1-dsafonov@virtuozzo.com> References: <20160831135936.2281-1-dsafonov@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain Sender: owner-linux-mm@kvack.org List-ID: To: linux-kernel@vger.kernel.org Cc: 0x7f454c46@gmail.com, luto@kernel.org, oleg@redhat.com, tglx@linutronix.de, hpa@zytor.com, mingo@redhat.com, linux-mm@kvack.org, x86@kernel.org, gorcunov@openvz.org, xemul@virtuozzo.com, Dmitry Safonov , Pedro Alves 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 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org