Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756176AbbHYT53 (ORCPT ); Tue, 25 Aug 2015 15:57:29 -0400 Received: from mail-db3on0091.outbound.protection.outlook.com ([157.55.234.91]:15136 "EHLO emea01-db3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756076AbbHYT4d (ORCPT ); Tue, 25 Aug 2015 15:56:33 -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; 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 , , , CC: Chris Metcalf Subject: [PATCH v6 4/6] task_isolation: provide strict mode configurable signal Date: Tue, 25 Aug 2015 15:55:53 -0400 Message-ID: <1440532555-15492-5-git-send-email-cmetcalf@ezchip.com> X-Mailer: git-send-email 2.1.2 In-Reply-To: <1440532555-15492-1-git-send-email-cmetcalf@ezchip.com> References: <1440532555-15492-1-git-send-email-cmetcalf@ezchip.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;DB3FFO11FD052;1:MJ2KcxO5PrY8MSyAaOlJAH/JAq72Gc1WYDbyJMp4+eoRx4XJIlMJwhTb9RrstLxeftxhZQPQfTvnIhGnjKRM0bdY3busFZHg2dIzIrlfzJJmF9L8jwnS0b4ng4jrqHVNLbggd7yQRwnMFlrnKU2wPbj+OuFdjbSvKSCMyFYDvxtg8zO9e+mpsvqZPke9oLauwuTyWI5Ao/8RxAMEv5PSyAyY7lcqgvpj9wXoCyQWtb2TaMGOsD8TRtqG+OSx5yPgYvMCUl6S0GOFdJkTfkhsud4ixCUvw98tCVbMmip5ap3O3AlTMHKDmSdspectrhWWhnDwZJF5DiySUrKMlvsfKgNd2YksrcNJCb3Wa00rang= X-Forefront-Antispam-Report: CIP:12.216.194.146;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(3050300001)(339900001)(189002)(199003)(50466002)(48376002)(36756003)(107886002)(64706001)(5001960100002)(76176999)(33646002)(106466001)(189998001)(5003940100001)(50986999)(47776003)(106356001)(105606002)(106476002)(46102003)(42186005)(86362001)(97736004)(19580395003)(5001770100001)(87936001)(4001540100001)(6806004)(5001860100001)(77156002)(5007970100001)(5001830100001)(104016003)(81156007)(50226001)(229853001)(19580405001)(62966003)(85426001)(2950100001)(68736005)(2201001)(92566002)(9376005)(921003)(4001430100001)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:AM2PR02MB0769;H:ld-1.internal.tilera.com;FPR:;SPF:Fail;PTR:InfoNoRecords;MX:1;A:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;AM2PR02MB0769;2:fva4Ey1Q7YAAXQ2UV66Q7bDCe5ixu61L8woPVMBJ8AEM5Bo2JnuFTBqtAQMv53A1VfmTZ9XipYzEHwJVvm0JYwingzs7TBBKoPJxP+E8Em3KpBROt8dlOP/PeKEEUG1FyAw+xFW18nVXRDe4OEUjF9USqL4KxNTBeoZIgOPFG5o=;3:iVRA5EVAehmuCOJNVXkY12EfpfC8AJoqIqbUsce81YvAYvM3Ya8heYC+5HY4y8cuAWPaahXBl657l7ONRZfA9WdFQ+SJIyocoORMqf8phR62Ovq4L9HGcUqMbswD9rklbUMtV325NxPoT4tjT2rYqFdbfBfaChpxTQOJ4B6wYAtvRF+QUqvdyiZRWGtnuqpAtg3KaXtO+UWNNPyWWUSHNUW9stIIL9TWW79pMXzA+g0kDznB++vzxOU9UTHz3iEp;25:jY2cwEVxEb59suuhDRuJ7r/LfyBEP3IpIEXJRATyoRF0FZ6yvWQTltnFZOUnrhkUsZMJogJXe3ZrSMoKt2cP0MzQ3CSm2pL9AOXmrzeWCRFy5vCOn2Y3I2KmIGyUYqbWGaIYC/p6Dur2dGbHJ2cMnBYEglZoju9A81Y9v0a/ToEqkJYHF0VwvP8+NC+I9EYD2B/v/VXslCyGkCll8/Uywxa8hN3O/WyX0PZrPBWdH/OVDmUqwaSII71IVLRP4Izq;20:p6XFBdvRmDhu1f7rE0udw6vqzscxw76CbVLdHmeFs7atrj+QAWDElp0mCl49u++C1AI6U5bZ0YIPlNwP/n/k9usJ6CfIV2dnoO7YzXvR3o5qOcrFH+jWdc0xQ4sJ+rPb+IK91vsH8uImQ6xHBacsxjJ0RCnDzERb1OVwSGWkLe4= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM2PR02MB0769; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(8121501046)(3002001);SRVR:AM2PR02MB0769;BCL:0;PCL:0;RULEID:;SRVR:AM2PR02MB0769; X-Microsoft-Exchange-Diagnostics: 1;AM2PR02MB0769;4:vMM+LNBcYJ1AUWbRo3i0Iw2u2I+fQeGfri+ksaTntjsQTR9Lxh4CF20CD6bm+XldYepYSz9I0RC55wOIDlgkcFj9TXAQWY8Y2LJIzNfl5WdeB/CQpeIT8uR37usFDii/Xw7ZoNh45u3+vOMBMTqcayHjlQkx5aIg35RtyD1d1Ta35WA6+vpHNyqeDhBAbp0RU0f+cQnm8cJOH18DIQsQmP133Lw+XQnvl10QtCK3KkgrkUHm4M2u0BQw2QLLFnxN8ahLBBwbTBR9q3qhulTQcaKHOmKCCPXlhWvrol1/X79B6w9xYaNjdAfmNtxWywzL X-Forefront-PRVS: 06793E740F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM2PR02MB0769;23:+i36SlnnqkfAoPxrwl+d4BweilRS4imHD7gzzpf4f?= =?us-ascii?Q?uajz9EO5xp8BSgZhtqBHI2Tv7+rZa7WBRDYJWxqvKXzmulznyE4fR4I2abNK?= =?us-ascii?Q?Yv9i9NRiB9PGP3EZMKsC91OC0HPEofIJqKddl+Fl3GhTe7pSGjK3m8jdF3yD?= =?us-ascii?Q?2Y3Frd4CHl+xndvg/Pt9NeSwRn8Ew0zdZAoDyyHXglbFgP5eMAjHBXAnHNsw?= =?us-ascii?Q?0FH0lH1q+/4Sos2lCEW5CgDVrc3EBj9tarL+GECutA67XELXsucinJGh1nLj?= =?us-ascii?Q?XnRcpSUDPuD1GrE6aYCOt66rPZOmUR3tMy9LznKnkIL4y1V6zYhzjtmYOTnd?= =?us-ascii?Q?a4rMKBACvjuMHELKhGjkvVmM4UI/QGMIN9l6ibMKT+QmGJ8rxFDcyekYZ/xK?= =?us-ascii?Q?usS/a+QYjl6lwUEBr9dNu/wokQdBlj0ODP/RAOUyxthHu2MIKDwaY0B8ZQD9?= =?us-ascii?Q?IabffQAbae9ddgtBFpBxGUYU6LImwesFSCwK7GEU9bib+RoaOy3JqOUGLFhK?= =?us-ascii?Q?ZeXZTGDs8KESh5tVC2kZhsPRRgsj3/nlJXRVktWpqjiS72cjpP0ILmlSg38Z?= =?us-ascii?Q?fpwEp9PH7T/5Nlnp0xwa3umVl1/bang5kosKD4HjM8IRZr/g1j5v0CiICot7?= =?us-ascii?Q?4RDS/fHaMkK7O7y7eZ9Ucll90e7591EJ2cYYKvjbTjKngcIqw3qNztBdspP+?= =?us-ascii?Q?i/Xv91urpCsl3p1bXA7qQlK5gW3Hr3X9IqDObmy9oGKqbJzvGDWTaaB0NK1S?= =?us-ascii?Q?w8DHoI4s5LSsrUGa8l/3NfLbWFgmPQl4rVwozs7sz8SuWfshGeg/gjrQr/E7?= =?us-ascii?Q?/A+1W7oRTcQko/6leptJaJxW2uK3Zwzt7qInLk27e3tNW22jnjMSunGpF0vG?= =?us-ascii?Q?eKFmRj+32IeNAEJBF8MvAWNG487sRmXjG4ArOtjtLX8V2sNDnUlrcWJc89v7?= =?us-ascii?Q?HDe12nKdKkABko6iTs6JiL2bzaGhb8fpmBu1gOT0LRKHXKQ4N0ykFUjqY4fE?= =?us-ascii?Q?FPEFq4AW4v844f6p9Wr+HW2MQwo2ANC8JCbaxkgEbBtCCttRoSqirkmZarN6?= =?us-ascii?Q?esRhYSd+DCOWT3MTQbhk9z+/KI6lwDjJdX1/f4e8pt1AFm1hgHTi5LXL+YmH?= =?us-ascii?Q?XFJ/53WNcdP6l7TpRqo5e7ibPL1v8Zp3bkWoEgPetpeHlMcieMn7NyCee1K7?= =?us-ascii?Q?WnbVGouoKpLPuAZKBOKKRnGa5+X5QEqtY5Al2x5QXuqB37WYXdgsKVOMceBv?= =?us-ascii?Q?XXVnGA/c5LWYqBzXMYM+TDW5jr97uxImi5QeY62ot0BTJ7dPpe81/tdhUtsx?= =?us-ascii?Q?COI5vU45SXPMTay4gAPEY5ohNeE2TX5SyFTMN8khxAF?= X-Microsoft-Exchange-Diagnostics: 1;AM2PR02MB0769;5:lQs0qLHg+wS9HDpler99uAp7V7SDciackM57SD5xnRJP8W6heUkHcd5C1zF8k4fcW1cYkBr7TIL1Et4kulm7KBfXlxRS515CuVEFcbd6sMtOw7utDvvwna5xzYbhoXLWIGixlblnrp1wtzwfLISQhw==;24:EGshd68nDibgnM+uhvPvkPgfDDwOmyZikMYog+3GPTwBzFM09VhtQhphr4Ok2sTNR0Zg+goudPB2mP/su7kFCtXRuE+lb348DBQl4g39loY=;20:JQgJqu7oJVFGWYPgqZhXd+lR4v41m2+S1yPyvS8Rrwy5/U8O4AMfftdsZ/8VCsli7eX/F4x8M6cRZoskFHuIQQ== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Aug 2015 19:56:28.9136 (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 Content-Length: 2433 Lines: 77 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. In addition to being able to set the signal, we now also pass whether or not the interruption was from a syscall in the si_code field of the siginfo. Signed-off-by: Chris Metcalf --- include/uapi/linux/prctl.h | 2 ++ kernel/isolation.c | 17 +++++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/include/uapi/linux/prctl.h b/include/uapi/linux/prctl.h index e16e13911e8a..2a4ddc890e22 100644 --- a/include/uapi/linux/prctl.h +++ b/include/uapi/linux/prctl.h @@ -195,5 +195,7 @@ struct prctl_mm_map { #define PR_GET_TASK_ISOLATION 48 # 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 a89a6e9adfb4..b776aa632c8f 100644 --- a/kernel/isolation.c +++ b/kernel/isolation.c @@ -75,11 +75,20 @@ void task_isolation_enter(void) } } -static void kill_task_isolation_strict_task(void) +static void kill_task_isolation_strict_task(int is_syscall) { + siginfo_t info = {}; + int sig; + dump_stack(); 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; + info.si_code = is_syscall; + send_sig_info(sig, &info, current); } /* @@ -98,7 +107,7 @@ void task_isolation_syscall(int syscall) pr_warn("%s/%d: task_isolation strict mode violated by syscall %d\n", current->comm, current->pid, syscall); - kill_task_isolation_strict_task(); + kill_task_isolation_strict_task(1); } /* @@ -109,5 +118,5 @@ void task_isolation_exception(void) { pr_warn("%s/%d: task_isolation strict mode violated by exception\n", current->comm, current->pid); - kill_task_isolation_strict_task(); + kill_task_isolation_strict_task(0); } -- 2.1.2 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/