From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753396AbbJTUhU (ORCPT ); Tue, 20 Oct 2015 16:37:20 -0400 Received: from mail-am1on0092.outbound.protection.outlook.com ([157.56.112.92]:28064 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753228AbbJTUhJ (ORCPT ); Tue, 20 Oct 2015 16:37:09 -0400 Authentication-Results: spf=fail (sender IP is 12.216.194.146) smtp.mailfrom=ezchip.com; ezchip.com; dkim=none (message not signed) header.d=none;ezchip.com; dmarc=none action=none header.from=ezchip.com; From: Chris Metcalf To: Gilad Ben Yossef , Steven Rostedt , Ingo Molnar , Peter Zijlstra , Andrew Morton , "Rik van Riel" , Tejun Heo , Frederic Weisbecker , Thomas Gleixner , "Paul E. McKenney" , Christoph Lameter , Viresh Kumar , Catalin Marinas , Will Deacon , Andy Lutomirski , "H. Peter Anvin" , , CC: Chris Metcalf Subject: [PATCH v8 09/14] arch/x86: enable task isolation functionality Date: Tue, 20 Oct 2015 16:36:07 -0400 Message-ID: <1445373372-6567-10-git-send-email-cmetcalf@ezchip.com> X-Mailer: git-send-email 2.1.2 In-Reply-To: <1445373372-6567-1-git-send-email-cmetcalf@ezchip.com> References: <1445373372-6567-1-git-send-email-cmetcalf@ezchip.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;DB3FFO11FD002;1:UUNOQbh1clWJv1uxnbwiRp0zSQne+6HCuypay1WNgUS/t6L3kb0Yq1XMCDatOZLHtymWRvJ34tcEx/2pr/gxh2VI7H4pXBe/Nsh7X+IQiC3KADQp5MkclkO8t7pOPl2aRjXrvXRWj7lj8jJ+6r7n7OM6agI96tgaKmO0ANN98xKbylUVfBQzCt4+HzIUWn5/+OK9D94XRr3Skb1AAgUW66DZPKkAjt/7pG/RUOp72A0OYPS5UbJlSN2/WD4pZP+n98RPXtG1pntiFJk4NtEfY2oY5LgtZWtQL9F+Hfyl4OGJaav8LHjVMk1tc6dh8UlSDyvDTc132913Rvr8VK0xCgBJ0uhUD4uAw6poFY6pSWM= X-Forefront-Antispam-Report: CIP:12.216.194.146;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(87936001)(46102003)(85426001)(50226001)(5001960100002)(2950100001)(11100500001)(92566002)(5007970100001)(104016004)(19580405001)(6806005)(50986999)(189998001)(36756003)(106466001)(33646002)(106356001)(107886002)(5008740100001)(105606002)(106476002)(50466002)(48376002)(5001920100001)(229853001)(2201001)(86362001)(97736004)(81156007)(5001770100001)(19580395003)(42186005)(64706001)(76176999)(47776003)(5003940100001)(9376005)(921003)(4001430100001)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:AM2PR02MB0417;H:ld-1.internal.tilera.com;FPR:;SPF:Fail;PTR:InfoNoRecords;A:1;MX:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;AM2PR02MB0417;2:JmeOHFAPoYslMquQaILMBc3aMM7coz++/RGLZBu8XRNk+eR3tW4KxXwWrbRua3WqpeA1+DXg0iyXd/s7tbGFkBGJochFyb9IM9cXMR69bBmDoRy8/bHENQ4qtI1G7eKlt7pvGHLXJ9e72mPVbPBBB7+H5NEHajV+DMwvk1cJfMg=;3:aVSqvHHVBQ+xUufiYd1xJ5m5TFQs3q62WSkcXv/L0cFxiXuhtlvktDzRCD9L5yFcaRJWxNcjDZ9eJ33vmvVGeVna/fjezHG2H9S/vQlmrkastIeem3rpbCMn6zcHO/rJdYNOkMwY20OfkyEASPiFzK6spAln7rVpxWEivkd0vI8HJpD9r1JLK5fUU1uCw+C3bQz7xn4bgHRn9vg9CzIhRfpEqT8I3A1VoqiVqyuwtk2+te8AYc2wCt+5+fLk5/G+;25:RZyVWCCYnFRevv31Nw7nORYqiGtsGhNzKPhy7PBhcKdPpLqbZz6Tq+RryYNjFqpWl/eD/kqdLryrfEfoRO83G2A7PK+Nose9BOwszgXGDFAkUHWJ05AwXSHipimJvv97oBWBRimuegWuwHNHa1BW/3wmj4ZqTc+95rz61ctJJ/fgPusspWvzUPD9tpXCP3Yyt+0FiZDj2p/QYruuaEcffH9uIYrx7YEHr4SWda6QgUyL58PgvMg8oNIB6gJZXAKTDbXPdUv4ioY9YuZVUn2QHQ==;20:YQ6Xk+HxD83zXfb7pBXISh31siBER4IjG00ICjdOu3/jcCBQkAqIeBwtWKqt4/DsIlL1Vm1DOQD/GsrjRrkY+joA3cJh/Yh0GRCGMWWYfF1ieKPjvkJJeuUuHeg+dF6BRE3MdPcnB1slLJ6YQDtuQ5SCos1PPMUtcG5E6xaxdmA= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM2PR02MB0417; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(121898900299872); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(3002001);SRVR:AM2PR02MB0417;BCL:0;PCL:0;RULEID:;SRVR:AM2PR02MB0417; X-Microsoft-Exchange-Diagnostics: 1;AM2PR02MB0417;4:1OMI4Ke8UZiXLWUMgl1TvYV2H5gSoO99wq7mmPRlun2k0H+XMTh8bjM9dsrgHBzE5LTylK34SA3cAV6CAf0sA9lWyEoreUHzSQvpAHmm2LEizXDHJ6V04hK9897cAouREmKk2k/svA8d8Qb3WfNC4FKmTmYfSJqkRWsmA3CuY9LtI/RgWLggjR+6tm+7S74NIQwE7Tmy5SKkYMqIBh+baFQAVsAa0z5DaZGVYd4qfWD6ScY8OY4PJ1s3r/Dl3Nw9DxDZAJmDIT4kA1HJoI8b7e2ooeGA6N6YWgc8oQvZZjn/PWtDmKd8r+dNRd1C2mXKUzB0M1JLeo8P0hRK16ippOKYlr8O3D9y1oo3H7jDM9o= X-Forefront-PRVS: 073515755F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM2PR02MB0417;23:l+r7BKiDx0sec+YrEPAijGr2CYtye+tzIBFTNbILR?= =?us-ascii?Q?QHgVJgmmO80MklU3eI1DGaRmIH0llpS/OUj27cQ1C4pyr10E0iSpBfTi7gHH?= =?us-ascii?Q?ZpHXJaE8m6n51v2nKu+R1UVHynu1j4EIzTEcvjU+SBoKfnXNxt1YNA7mENwN?= =?us-ascii?Q?DcXSKJg8c0ICS2rwE/FzYxIP2w4Sbvr6D7XPyG+4ybnEAq/e7+6kDbf+nieW?= =?us-ascii?Q?qRujr7g9YPM+dOcx9jnHMQ9z8n4JSpzuJ74csTFfDOUJvDiW20jKsp+NoWQ4?= =?us-ascii?Q?Wo/xyVBuAR6wMSSpw94yxU3schepZFMTvhEMhXi9AR25Xf5e+ohF2dKUCJXM?= =?us-ascii?Q?gFyhTDEUpy5hgnwcNWcejImWFun2b/Mj8mecLYFwf+t9CPiVWdXm7/blYYnn?= =?us-ascii?Q?Wn9HQg8dRV0zqMshZ6WL8XggyYj+H0QkBr9k9d2XKlLZiWwRx5BgjI7R0vy0?= =?us-ascii?Q?9Wlw/zSmhZopP5fb9/hdW91okGY7eV16Fn8/zPMbR0EGJR+tO0oxeBh+egFI?= =?us-ascii?Q?CfOyQMlGwZUhngus3TEV03sg07j53CbWWT0X8n3L1YZ2wZox20Ck2C8zLqOa?= =?us-ascii?Q?OEhPgS6L1eog6ymwTvbBnyr2+OUKsjDcS+W33p9PJ2Xj0FxCS8skBmzcTzPi?= =?us-ascii?Q?tK+sQoPCkscCvKrhSoWzMGdyEwgCtZBbvGbFShQ02dCKulKHpR/zRA0LJN+Y?= =?us-ascii?Q?b/EmHOgocwwhTsPlhpAQIorHpis7XHZ9IQQXpqgiwXDDg6ij8pwjzCkd0tB3?= =?us-ascii?Q?e2NVFJDeuIVYwrtCus8qQqcy24nNynuGUJzLU3wTKy+obJKHJgq96qIP+ZVK?= =?us-ascii?Q?bbvIwS4NVjnzUgREEhgFQAevH4O+Wt93h17aMig8ErrhvqlXVJXZC72V/CN7?= =?us-ascii?Q?HPzqmuukNp7iOdAvPC5F73Jxb4T8to6w8KF7nytu13hfl536jqdIIyxUvu0l?= =?us-ascii?Q?9MtY8ak15wU65lOhUJJBTWWd+CJ+4L+h960ans0LNZ2b6sl6kwaiXiPDuEZx?= =?us-ascii?Q?xDw52+OOCY9JrA1ZrMW85rPf6xKmuMz+l6g4f7EBbGiFQcNu16XtW4JXvEon?= =?us-ascii?Q?hja4/ugTVAE1TIDHErDwm7e0h5ovg8dCqDf3NsZljQ+6LdMoVQ8yc7Q7d54o?= =?us-ascii?Q?dFgpJOoZFlABhumdACmrqwWV8BnQcY0xbd4IbuQuUfjxSvYEDyN/jIKhaEW+?= =?us-ascii?Q?1a9klF1Xm008dC2L6MHzqeUxBTIQNRbPhsSfK4V6DfRpQRy5LxmblGMwtpUl?= =?us-ascii?Q?iGNtdvRJfTeUZ8V5AnXc4BrzT570ydYiBHu3gS9?= X-Microsoft-Exchange-Diagnostics: 1;AM2PR02MB0417;5:wCISFAa7I8BIJPgAFd99ix23A1vm/TATdmRvzzym40dBBE5a4lMwwal9gBId58ZLS1d5zTR5fJUfwbVPOQlwxip4yn04QZ0/WZBn3cuBtYbgiy6R3yaIGgTey/zwhm3IL3M53G7LZVxpnhObBL74Dw==;24:F7Qz15mkapTlg+3YIEUj+6DixT8PfuN01FxVDbCEJzagmnuMIKmlqZUPvEWG+YeMPaC93/e2fDKo7+C0q0yn+SZaAS0NP1OOSrV/A0+8Em4=;20:HqeUn0Q9g90Pp5L7DVUm4wPX7O6+O3UUFQOyc34dZmlx16e9A/kcE4gV10tEqzhFLM1HAjGD4IAO7Z2959KHfQ== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2015 20:37:06.5016 (UTC) X-MS-Exchange-CrossTenant-Id: 0fc16e0a-3cd3-4092-8b2f-0a42cff122c3 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=0fc16e0a-3cd3-4092-8b2f-0a42cff122c3;Ip=[12.216.194.146];Helo=[ld-1.internal.tilera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM2PR02MB0417 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In prepare_exit_to_usermode(), call task_isolation_ready() when we are checking the thread-info flags, and after we've handled the other work, call task_isolation_enter() unconditionally. In syscall_trace_enter_phase1(), we add the necessary support for strict-mode detection of syscalls. We add strict reporting for the kernel exception types that do not result in signals, namely non-signalling page faults and non-signalling MPX fixups. Signed-off-by: Chris Metcalf --- arch/x86/entry/common.c | 10 +++++++++- arch/x86/kernel/traps.c | 2 ++ arch/x86/mm/fault.c | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/arch/x86/entry/common.c b/arch/x86/entry/common.c index 80dcc9261ca3..13426c0656b4 100644 --- a/arch/x86/entry/common.c +++ b/arch/x86/entry/common.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -81,6 +82,10 @@ unsigned long syscall_trace_enter_phase1(struct pt_regs *regs, u32 arch) */ if (work & _TIF_NOHZ) { enter_from_user_mode(); + if (task_isolation_check_syscall(regs->orig_ax)) { + regs->orig_ax = -1; + return 0; + } work &= ~_TIF_NOHZ; } #endif @@ -234,7 +239,8 @@ __visible void prepare_exit_to_usermode(struct pt_regs *regs) if (!(cached_flags & (_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | _TIF_UPROBE | _TIF_NEED_RESCHED | - _TIF_USER_RETURN_NOTIFY))) + _TIF_USER_RETURN_NOTIFY)) && + task_isolation_ready()) break; /* We have work to do. */ @@ -258,6 +264,8 @@ __visible void prepare_exit_to_usermode(struct pt_regs *regs) if (cached_flags & _TIF_USER_RETURN_NOTIFY) fire_user_return_notifiers(); + task_isolation_enter(); + /* Disable IRQs and retry */ local_irq_disable(); } diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c index 346eec73f7db..1ed4d8a52d23 100644 --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c @@ -36,6 +36,7 @@ #include #include #include +#include #ifdef CONFIG_EISA #include @@ -398,6 +399,7 @@ dotraplinkage void do_bounds(struct pt_regs *regs, long error_code) case 2: /* Bound directory has invalid entry. */ if (mpx_handle_bd_fault()) goto exit_trap; + task_isolation_check_exception("bounds check"); break; /* Success, it was handled */ case 1: /* Bound violation. */ info = mpx_generate_siginfo(regs); diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index eef44d9a3f77..7b23487a3bd7 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c @@ -14,6 +14,7 @@ #include /* prefetchw */ #include /* exception_enter(), ... */ #include /* faulthandler_disabled() */ +#include /* task_isolation_check_exception */ #include /* dotraplinkage, ... */ #include /* pgd_*(), ... */ @@ -1148,6 +1149,7 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code, local_irq_enable(); error_code |= PF_USER; flags |= FAULT_FLAG_USER; + task_isolation_check_exception("page fault at %#lx", address); } else { if (regs->flags & X86_EFLAGS_IF) local_irq_enable(); -- 2.1.2