From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753365AbbJTUhC (ORCPT ); Tue, 20 Oct 2015 16:37:02 -0400 Received: from mail-db3on0085.outbound.protection.outlook.com ([157.55.234.85]:36982 "EHLO emea01-db3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753128AbbJTUgx (ORCPT ); Tue, 20 Oct 2015 16:36:53 -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 , , , CC: Chris Metcalf Subject: [PATCH v8 06/14] task_isolation: provide strict mode configurable signal Date: Tue, 20 Oct 2015 16:36:04 -0400 Message-ID: <1445373372-6567-7-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;DB3FFO11FD040;1:BkjQzUaoYeUwAc4TfvAllDVWGg7BM0fAuQXWiW4678y5gTIaqAW20JvvXF4/4hAEnEI9JXR6ltubv58lp3hYZsre661FvvYiyFR/sLLZhyrxDCB1aZF51oIcJRqN4LbjSJyjekxU6Q3w8b2MzmzrvgKGMZNTJb2B9UdrlgHMXjia0NqsIG3XGfbb9BCXmGGylEdmXQ+f78hab4ETTEbWEXqtP5nynyUNACKomQ2V97knihtBbIQ2CEMb//mMkC/FIeSNpy51cWztlEnIc49hVN8nhsKiHa59rELek/tDaE201omOeT1N5JxGQOrJ3XI7Q03Ix3wr4SQi4cAg9XxjE+CUhWr+A9UWGlVciZrnx9M= X-Forefront-Antispam-Report: CIP:12.216.194.146;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(87936001)(92566002)(104016004)(229853001)(85426001)(97736004)(6806005)(64706001)(46102003)(50986999)(5001770100001)(5008740100001)(47776003)(42186005)(76176999)(2201001)(50466002)(36756003)(33646002)(11100500001)(106476002)(50226001)(48376002)(189998001)(106466001)(2950100001)(5003940100001)(575784001)(81156007)(5007970100001)(5001960100002)(86362001)(19580395003)(106356001)(105606002)(19580405001)(107886002)(9376005)(921003)(4001430100001)(2101003)(83996005)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:AM2PR02MB0769;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;AM2PR02MB0769;2:A+5IZgcHOPECUa29IOnMMwjic+pmd1aZgqplcvmdD9jjX7v77CVjXDfLd1eMaxKcsH04YUFWscit1CeFCR3Runsk4TG5Q2lb74ArQoVI35ISOvUaENmhtjLHES9r68v1kh33mT3y6GQ9OIYOq0VT1H8WMGBlyPkQgLvVdW22cY0=;3:gvGJoCZYobNldwdxiyO8oIB6VykkLnEXXO2+4poiI6y9bDZ2gQpM0qE2xvyLsvhViCgl+yJhTg5jqpIxpHoE0QEuRJomJ2UTS7J1hPwcErZb2zS+NeXcEoEazGKkb/u/4fBhHMTEugAV6pWKEeTxP41kQPcSQvhElG6sg7+4E8E5A+68FMLp2rv42O2Hlx/Jr/8KLaou16OgSHNVG2JfpP1hUYUt9PnFSRU+8ONXoxUJRXb9fgMo96HqfjnP9Qnz;25:a6yk3WTJ2Z1bHK6wI5fqsuC+PPsdNWruHGkex67SeqSiknK4eTtD5oCK2Yaeu/VC5Riu6sk2gcNVoFnrGwEacp6od1r5GF6f2/9c5PX5Lz3u+eV7eZJX6lsVLiCTiML2bjLyIs+3U81nzOQC8yHVrwagsdk2GQfTWlVwdhwwYFlrdB19RP71xWnncsWVB+arnFFuT8/XLSH8Oh8ZOlfouO6+fNZwS+Zij46/OEoHaOzgVCva1R/P4DiCcIoTdOCnAVwR+6c1v5n0Z/8mrUss3A==;20:aTYle9jXbmm99VmKHHxrWfNxBDrKMnUaL+JZ7Pc9cUBwG72RkN5oH0k2pXje3c3AO40Xp+BAQLfo0SGUBLjhjoJjbm6wBOYcTC/KX9tRB3mN/ybr0jaVGmeFpQb/+18keg4emfAxxq8LWpuwVi9Yebh11y1m/B4WnlfSgI85AL0= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM2PR02MB0769; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(121898900299872); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(3002001);SRVR:AM2PR02MB0769;BCL:0;PCL:0;RULEID:;SRVR:AM2PR02MB0769; X-Microsoft-Exchange-Diagnostics: 1;AM2PR02MB0769;4:9kD9Qw5pv7jhn0wIwwOFq9YbHSes+eZqxcRAoe4p8SoYXEBwkuc3jNdCZlgfEGxc91b3vv/fl+JaaGl2RbYmzQSrYddTfPJBXTT4Ve3tV+Zpt7daO31luWIEEkwvJ2Zto2szgPNAre6juBtK1K23Ga7FS2Amy8hc79lFue8ikKGYbF8YYAzK7EDN4mn5BsosUiE3TWt3c66S+J8sd/DuGb6Zy1qKH2QiD6hW5lPsb73xSy2LDXww4IyRNHUTeMt5n5t628Hl8+7gO+DDozg/b6kKDSB4iGkawoyoFaBZ6PpvnpNxxcjlVhDMz47YMI8xfesKo3ugkUKNIsH58hGIdvbMTXHIqNsUJ6Qrun2o7JQ= X-Forefront-PRVS: 073515755F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM2PR02MB0769;23:FgiOz4BTycn69Q7O0VNzA1LKG/uzCYa18GTquMRqt?= =?us-ascii?Q?fODowonbFwB9AIosWgmh7/6SxG79DGRuaEpTDnZYQIA/3RQ9PL05GS6301iT?= =?us-ascii?Q?VSBpJve9DipRkq0YOSNEjeKGQMQoNLp6zr3MVIZOa2AEdbWUkUg7mzUlt3kM?= =?us-ascii?Q?LQUVpxI4kPYJQVPWK8Mma+EUKUwrILMLGdJS7QkYrieV/jHps8AzxoyYUFN0?= =?us-ascii?Q?Ng1gqDD+UWMJIIxVkoOXSMBbH2+Ek7cbzq7bgeaPFGXgoDklF9LCBSc7afQC?= =?us-ascii?Q?MwFKLNT4Q67ZGhruMw7AycTZG50G6dw2vEmvDJX7XAGn2Q2JDt/CY0uu4kmu?= =?us-ascii?Q?uyCJZ/31Z8Dn9em/YHbvhXQegHuP7QpNbYZ5qvU6cfHLiOWKNWwk0lawIAwi?= =?us-ascii?Q?jej113wou6j26THjBzEU81GVMGLeV/dkd/b3Pg3db5VlYCB4OxLRrW3bn6C+?= =?us-ascii?Q?hSE2mVKLosqZT4Y8Jzs2QocJlfoEvb4A/4pRdy2J9XKyshoDAA2ILTVoz6Vr?= =?us-ascii?Q?DO1STOG0m3HA2JcZg8lBe5yJ+tD0bvh1fifsnvkNTYVGAWdLt57yP4j1s1wK?= =?us-ascii?Q?EcZTzHCM6kDuKZGbEpUUnMHhhvW8RHCggZ/EuclfcJz+iiHtsTlS8SRkuSDe?= =?us-ascii?Q?Qc66HYevL/090X0ufse71Zjg2IYxa1QekzYRlManoyY+SPRifIJD5H86zPAF?= =?us-ascii?Q?oyjvz7EsTzMHDa955RCQXpeLs2765JDcMloLe15tCvdiVPcj8R0MYfuROmFy?= =?us-ascii?Q?Vn193IXU0pth5ptcCfgLyyAVaFqflFfcWiUsPXAQ0IcXoQYUA50ELYrj32Lx?= =?us-ascii?Q?s1/OnFbXAwQhhZrq84ust8FG+W6x2GKyooaIoGRKoYhUIrDCdCcd8GvBg3jF?= =?us-ascii?Q?Hbj7uYWOMELhiBLKTxgXHn86KDVvUlJL7SckvwwBoEinxIWwpVLQ+RA54awa?= =?us-ascii?Q?hgjQ/SF1SdFAdk8D1+fbPVegpaKHZSja4TkPKQlTpXKVuJeiSraaqBJke4rn?= =?us-ascii?Q?AwQPrH0SN1iuYMBEu89esyWwnvJeGoUnM/oJ4VvU+QdWvK5AVArc8VLhkTIQ?= =?us-ascii?Q?GqdeesamcwPR+uqjn8KPvsViZXfFDihiID3DCdehWV+YwZ4BXvxgxMjRv/V5?= =?us-ascii?Q?hAHiGepOuI+ljnArHvJ/eTw0B3y2AZf1nXF+p67uxEOt4RH4Om0RoLgQdXAj?= =?us-ascii?Q?0XMIRlEHli9iN2M4Qj2ClaE0zA6qgwHEhLrWQSlkXc1PqjDiYP0hT1rOx/Z9?= =?us-ascii?Q?Hq9eF8lJmkYv6WThdQQSyTuUepp5VWczjbpCtYQPoZu34BnNEX+gAlv5FBcq?= =?us-ascii?Q?pv0OQdt5TotTumWzWUrp/k=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM2PR02MB0769;5:1bbCneWeabDqca8TA1YzzgMctz1qwphk8AsDJ7aCp5y2K2GiTJvrLycjRgbb10Pa81fRXPzvRtw0LR+/TMqRF16BO+hXLloj5VoDYwfVx4+Y6KCdzGGZgGlGVGdlxtKvvF9e3UxGC14tBB6wMKmPnQ==;24:U3PXHRXZWbjOBVQuzyWHr1/dmMdmAmcZ4KGSSWapdcKqXrveNsuziTlW/GJX/h8lJoWF+CZHxt53EIgOnXMLjaxZsAAWUFq7VkMvN8dzCkA=;20:r0Jt2/5maGnENWhweZsC717tgn933FqPZDNN2Ar97i3f1jjzAL851FlENF5oRSIDCo0Dp67MikdE0hzjUR6IvA== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2015 20:36:48.4849 (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: AM2PR02MB0769 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Allow userspace to override the default SIGKILL delivered when a task_isolation process in STRICT mode does a syscall or otherwise synchronously enters the kernel. Signed-off-by: Chris Metcalf --- include/uapi/linux/prctl.h | 2 ++ kernel/isolation.c | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/include/uapi/linux/prctl.h b/include/uapi/linux/prctl.h index 2b8038b0d1e1..a5582ace987f 100644 --- a/include/uapi/linux/prctl.h +++ b/include/uapi/linux/prctl.h @@ -202,5 +202,7 @@ struct prctl_mm_map { #define PR_GET_TASK_ISOLATION 49 # define PR_TASK_ISOLATION_ENABLE (1 << 0) # define PR_TASK_ISOLATION_STRICT (1 << 1) +# define PR_TASK_ISOLATION_SET_SIG(sig) (((sig) & 0x7f) << 8) +# define PR_TASK_ISOLATION_GET_SIG(bits) (((bits) >> 8) & 0x7f) #endif /* _LINUX_PRCTL_H */ diff --git a/kernel/isolation.c b/kernel/isolation.c index 30db40098a35..0fa13b081bb4 100644 --- a/kernel/isolation.c +++ b/kernel/isolation.c @@ -84,8 +84,10 @@ void _task_isolation_enter(void) */ bool task_isolation_exception(const char *fmt, ...) { + siginfo_t info = {}; va_list args; char buf[100]; + int sig; /* RCU should have been enabled prior to this point. */ RCU_LOCKDEP_WARN(!rcu_is_watching(), "kernel entry without RCU"); @@ -97,7 +99,12 @@ bool task_isolation_exception(const char *fmt, ...) pr_warn("%s/%d: task_isolation strict mode violated by %s\n", current->comm, current->pid, buf); current->task_isolation_flags &= ~PR_TASK_ISOLATION_ENABLE; - send_sig(SIGKILL, current, 1); + + sig = PR_TASK_ISOLATION_GET_SIG(current->task_isolation_flags); + if (sig == 0) + sig = SIGKILL; + info.si_signo = sig; + send_sig_info(sig, &info, current); return true; } -- 2.1.2