Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756889AbcDNSLh (ORCPT ); Thu, 14 Apr 2016 14:11:37 -0400 Received: from mail-db3on0124.outbound.protection.outlook.com ([157.55.234.124]:51934 "EHLO emea01-db3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756751AbcDNSLe (ORCPT ); Thu, 14 Apr 2016 14:11:34 -0400 Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=virtuozzo.com; From: Dmitry Safonov To: CC: , , , , , , , <0x7f454c46@gmail.com>, Dmitry Safonov Subject: [PATCH 2/4] x86/intel: down with test_thread_flag(TIF_IA32) Date: Thu, 14 Apr 2016 21:10:12 +0300 Message-ID: <1460657414-12530-3-git-send-email-dsafonov@virtuozzo.com> X-Mailer: git-send-email 2.8.0 In-Reply-To: <1460657414-12530-1-git-send-email-dsafonov@virtuozzo.com> References: <1460657414-12530-1-git-send-email-dsafonov@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: HE1PR01CA0003.eurprd01.prod.exchangelabs.com (10.163.2.141) To HE1PR0801MB1308.eurprd08.prod.outlook.com (10.167.247.150) X-MS-Office365-Filtering-Correlation-Id: dae313c0-7999-4f19-ac57-08d36490334a X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1308;2:zoig+SQhX5QdMRC/81unklSAjzJM1JBsTFYtYDoGFBebdjlBxhnGCR+9LM2BEH4gW32IXSHeUonYyTzuUB1nPp92vJ4PBmfuMWWWQzsGd7GDTEdJvuACUnpkVhNW2SoBXQITYQd5CAghLdOehkPMo8LAeXBERk13JJYNcSLRlRR+FcvBJ10MBz4Bg3CDrJ/l;3:pySCVx+r/Yp7/VwuCDC/QX7k10v5tAxIzPsL5XfE/PrCIO1f2XX8eKrB1wk0IRAPZNDfJwsTyScj1WxDSypQPcXP3Ng31KuSZH7OUEkzHgkQ8udGx+DY4hQBPePzSNHy;25:QP4CEEIzS4yqN5ImD9f92k336z8afBI0I9abcM3wHtzZqlJpol3H8d98j5S/ZrdJki5GuKzuhb8nQYGiBy6oyb8UtIege4l74zDLRcZU2ivRHq51dDpXxAU+Z/umPi6LVd4ssaE85CY4HfPewDXFJBZruL6WzCsLghIRp4xN8lRU7YXB4xCYOZgOOSIHvAYHBN5VHYkR/+duQ0/O7zedVE69WaQZ9r21nddB0dv91WCMlIQJXXM6ZUlIVqAwnAdlxb+unlko+2+EVMlO8pM0iLHqzBSW9yq5NFmjtA7ELkOpbDQ7JxCPsaCQ1FJhC9q+H8wXqTlukWnOt4BLHO/mXw== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1308; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040102)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041046)(6043046);SRVR:HE1PR0801MB1308;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1308; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1308;4:98GHR1YjM5ENgxj45Bm4UvdFsJyzFyNvzFwvLwFAHGmu8KoNhBBnVyrG5bMOfP8MSheRTe6gUOuFOV98c+3I/PAHVtNloR3k+jsSOYqA+h+6mkAOTGOFTS2UOcOgo+XSjKhTQEJfah0N1IKg2HqwMuPm9kMPmbkeIjKVYy6qWJ1tQC9GBjlgUUwFUHjZgtMKYKUS5Gn9hGC3DdfQqFkPixd5Fun2HVHxupIjkB9+G+GoObOs3Mf+eVKV9Hr41wZ9G57Hm3LPOgdKDojCNAxlmiIR/w6/+1DFFVlzVB4YVHWWnro6dlSw78Bp5VKtQ6H/wZxnluplQASzUIrefMN6C5MFQulbmvYFJOJfZas3Aw0BWGJMsblODpPw57N4+pvEKFgmibOzKpcEI3AqPuhm/pl7Qn0/wA5h9nWSds8meNQ= X-Forefront-PRVS: 0912297777 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(53416004)(3846002)(586003)(1096002)(50226001)(6116002)(47776003)(66066001)(77096005)(42186005)(4326007)(2950100001)(19580395003)(5004730100002)(81166005)(107886002)(189998001)(110136002)(33646002)(4001430100002)(92566002)(76176999)(5008740100001)(5003940100001)(50466002)(36756003)(575784001)(86362001)(50986999)(19580405001)(2351001)(48376002)(229853001)(2906002);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0801MB1308;H:dsafonov.sw.ru;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;HE1PR0801MB1308;23:qvvbqszeP9iFup4HUgMw57kyAZr1pIPlAtjRkV9?= =?us-ascii?Q?FNKmTzu0ryRHTYLyPcmv0QDiImz2ih8GH05sw4yWGSLiAYC+7lAdrxNzSTQ2?= =?us-ascii?Q?1gtLmH34dM5Xq6HtBlKLypSx04QDtQgaW0XESMRWYstVS8P0wd73DtWuAnhx?= =?us-ascii?Q?vOSyJV0WIk85dvCj35d9sI4IovACeesYUkMl68un/dIjqOsfUakjm0Nf+nrc?= =?us-ascii?Q?T7j/SUaLnaCJdYB/ida8IMqKXkm4Yh2iy+G+y9wv1lkzhJh5hSFE7tSvkyHW?= =?us-ascii?Q?Vm5/YXCZP85nmaQKyU/mDKhu5J258N+kVbKd0dzQQblwLeWfh64LRNTKEQmi?= =?us-ascii?Q?wG4Gy7KKq7am6BZ4Gi/Xl+jo4XQWhP3s2oYUvqmYQ6VkULwc+7vnhYgbVV3g?= =?us-ascii?Q?pMjVagzH1vDqlFIOuZYR77aSREht5wYxslPV9n2ac6H8W4lFI2ParNGuBDJW?= =?us-ascii?Q?M2gFSSPtONFyEhnPxdQ5NbToOM+aFqSuMb4As4ZFfOlDNMG69ud7ilgJKZwD?= =?us-ascii?Q?jUC9BLlJNsuIAQkaimCfpEjTSw9TFhSfwMWhvP8x4WKNnFYd2VD/IFWg8Rfq?= =?us-ascii?Q?FlFkgsAvpgGmgEX6XGUB6ODun5ikK8IHtmROV2W00OHybGkbCeWVMqw/gIUs?= =?us-ascii?Q?rHl67k08KpyIfj0F1POEp4UmxT1BwvfELYT8x3tOzYGZOfipxeJOLNjVy3tf?= =?us-ascii?Q?LOMlE1fKdhxqdNPetwZfNzrtLLGrrkaRA0+Hs72/p/95f7fz3hWKfRtjfuP0?= =?us-ascii?Q?/GXmHMpISTNwq+h0+t7b0nJihARnUSV/Yt6RVtvldfECoJF7YSI1q90+ofj7?= =?us-ascii?Q?3kcYhq8gmQvMCLjqHlKZ40N5XkZuFdtdm52YoeWdvIHesyfe2e5hoAtCVowr?= =?us-ascii?Q?pnpX9hxLcfXmU2/4yc8h18PKXTOfBubFZ575wROTYRodugSWMoBjjJleEO7F?= =?us-ascii?Q?YG4utYjH8Rx5avMzOP2+tZg0dWBf7WBHufGiv1iZeHd76y2yMV9CkpJ1YNJ1?= =?us-ascii?Q?EdTo=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1308;5:Smt3ITFUNrvuKE77+Igyl5A8n6E6n4+JqJahEtOkIt2jR4OcUzekGHuGqoQb3PTk+jIB+Z/kb1B+R4aLRy3dBf7r8kEgfUZ2HIPY3s1eQkhNYMQm3fBsB1Sra90znTzUWIdnpUUBmJAgXfi1TavrAA==;24:bcHljCoFqzJYitEJUAARjSRjvYEcJnu46IeVL5XBtuJf1a7bAznvEhH+mQ+aSsCusAwo2fGqiL2BBEbdTslwM1pPwwcLunXkFdk9hoYOjDg=;20:LebhkCrlEwggVqEcLjaG8EGvUxskIMUSABr3aWe7R9pqFIqlRc1KcVlGCL2zMNAIuolv8NNzbT/twEHIabKOiZ7BqjfPqDEpx9bNgU349V93baZz7VmcAQfHrZsvj4RQqjdsPYQQuGcrUDRzWxyjlnoPj7UrSh2Owa+8wXwwYPc= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2016 18:11:27.7190 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1308 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1085 Lines: 30 For IP + one insturction fixup there is need to know in which state (compat/native) is application. Now it's done with TIF_IA32 test, which is buggy, as the process may change it's CS register to __USER32_CS descriptor (and vice-versa) so instruction interpreter will fail to correctly fixup IP. Changing to user_64bit_mode to check for interrupt register set is better, however it may race with task, that changes it's code selector frequiently. Signed-off-by: Dmitry Safonov --- arch/x86/events/intel/ds.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/events/intel/ds.c b/arch/x86/events/intel/ds.c index 8584b90d8e0b..e903a8d3b4b0 100644 --- a/arch/x86/events/intel/ds.c +++ b/arch/x86/events/intel/ds.c @@ -962,7 +962,7 @@ static int intel_pmu_pebs_fixup_ip(struct pt_regs *regs) old_to = to; #ifdef CONFIG_X86_64 - is_64bit = kernel_ip(to) || !test_thread_flag(TIF_IA32); + is_64bit = kernel_ip(to) || user_64bit_mode(regs); #endif insn_init(&insn, kaddr, size, is_64bit); insn_get_length(&insn); -- 2.8.0