From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932950AbcCKWLt (ORCPT ); Fri, 11 Mar 2016 17:11:49 -0500 Received: from mail-db3on0096.outbound.protection.outlook.com ([157.55.234.96]:27084 "EHLO emea01-db3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932084AbcCKWLp (ORCPT ); Fri, 11 Mar 2016 17:11:45 -0500 Authentication-Results: spf=fail (sender IP is 12.216.194.146) smtp.mailfrom=ezchip.com; mellanox.com; dkim=none (message not signed) header.d=none;mellanox.com; dmarc=fail action=none header.from=mellanox.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 v11 08/13] task_isolation: add PR_TASK_ISOLATION_ONE_SHOT flag Date: Fri, 11 Mar 2016 17:10:18 -0500 Message-ID: <1457734223-26209-9-git-send-email-cmetcalf@mellanox.com> X-Mailer: git-send-email 2.7.2 In-Reply-To: <1457734223-26209-1-git-send-email-cmetcalf@mellanox.com> References: <1457734223-26209-1-git-send-email-cmetcalf@mellanox.com> X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:12.216.194.146;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(1109001)(1110001)(339900001)(229853001)(575784001)(86362001)(36756003)(189998001)(106466001)(105606002)(92566002)(1220700001)(47776003)(2201001)(2950100001)(5003940100001)(19580395003)(960300001)(19580405001)(50466002)(76176999)(1096002)(33646002)(586003)(11100500001)(4001430100002)(85426001)(107886002)(5001970100001)(50986999)(50226001)(6806005)(42186005)(5001770100001)(5008740100001)(104016004)(48376002)(2906002)(4326007)(87936001)(921003)(1121003)(83996005);DIR:OUT;SFP:1101;SCL:1;SRVR:AM4PR05MB1683;H:ld-1.internal.tilera.com;FPR:;SPF:Fail;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;DB3FFO11FD006;1:1AGZH/tc/k0Lw6ZZfqOlaFWC7huuLlmKldGpOeEwQzOTBKgVAYGybGPVvo44r4/eYltVOsx9+rIllinu+8B0YqU3J0za5XheDdJLgSfSHEXucTZ3Eh6ZX1JhncAuDLjj3DyEIMlBubzM3Ig8ashcjOXxoydkKwU3uVZzOx1gIRKANpmAF9ScnDzgKd8FpOgTWeuwJseYovr4N8/3YBSYYPl3zhikV+UwvKmgwZbYU+jxwz7OhHxdqJl2n7yyvhK57OAKcdwpt7nhUO3YgHGkiRcB5jbipRsfOoBWyr6q0JqyxneEZN2KPc+JN/eRuLk3OVrLPruF+ksVA5ZXF7GZSIffiem8D4VGpcXOOwxV2eOvMvC/UvOVTcr99fNFSIlN/iedeS+RpjY9YT119M2EJ5sOPLyYi0NdKqbeI6Dxm/mI3DUa9Uxkla3iiKJBQvCTfEWbt23Z+lCtmQjdi97Mfpfw6Q3ejAqtZBRWjkcIlgWMgKY3JTHsIYBfEU/f7fdnqQBHIWbwXwwFhwQPsfA8Y/6YdfRwFD0Mp6rrgSVV2oKvCgibnN3Qqiy9lnAHcbQf MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 6a2cbdcc-90ca-4d67-429e-08d349fa1f3b X-Microsoft-Exchange-Diagnostics: 1;AM4PR05MB1683;2:VdgNOlK7lCWC4DRy5GfGnBr6i3rZmQ9ig5pS1GoxCHptFC4ObfI/BG3/wPq/sZjK9OAZeRWlH9pP25Irq8ifECjBdkFSELQW/FhHGZC+aDOKU+p6AYiNqu2a12KvlAbfHNOnqUV2Z4ywhN/PUJM55deGGUTKseZKNLNDUayaHUCJrzMNbVYutvqaYQIUYIGp;3:5Qd5PwDBvLWHRX+PRRMJecU+/hiZKDJXdbBALMvkSIuXNKfXFef7jeteKop4XvD4B661pdljHyXnDzLz37naW21PN76yOFBydAfupIh3WnYa2tIJlsFyBvFnCuRhld9+jqUJ1KUypWbwg/djRd2raFE+lnzx4EQzZPbYnlq4ZBv7kJO/DVC2J3r9QYtFiw5YkQ3VCKcItJojlCJe3IhvOgW73mf0IC9brT2mgkdhTLU=;25:FCKhXJjfobYAU1ophTd8O2viv4MsAZUr5GhCGNsVjE6Bw9712TE08tIyxvR5/3cfNAx+VtP5qrHYW/NgHprXCb5aPr5szAY6tQASdR2aXd8wnJIe/2+4+/nteKBpHHYZItS6KQ86MBbs00NoZcXb4QPalbM6PRh5hmj2RCAdUJ27sqLsrUydrSR5TcIPnMRqeqNhYCTQ69pTgYIWTS1XlHySsskl8NeFPnTxL/Xtmi1zAuc9IkV7AVzFothbw8WwiM66dYxuxHkUZW4Higw3L8t4vpPL3aGQ0R3KCJyAsARoOBw/aGL15fHOnWxmuRZGS+vtNZ20XNoz6A25wGWT1A== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM4PR05MB1683; X-MLNXRule-EZCH-Linux: Rule triggered X-Microsoft-Exchange-Diagnostics: 1;AM4PR05MB1683;20:B8ePqcq9L1fiC+LrW98halfLg33eJ5RckSAVmvpsHpZGAwq3orrG4iCnga4/CVzbWbc5AMVEpIRA5e7ov/PGC/mOoF3r90cCLx97lcezV2K25MUkaZ3zjZKpsyuPVZBkeS6erX5cDEOTNUQqm5Low7FRQum7SaQrxi1lPZQ0ovardxC/6Hb7eZNw6KS+1Vbmm87EqkQdk3RmRBIqZ5pU3ZS+9o4sgJap1n6WiFRe6QXbxhtK1APCrzxQJjkEkpB0YfcOW8XGiI+tbujHnz1gmMUsWzyOojtE6ztotW/QMFGeEFsfBcCQKEoAiCJ3yjKeU2ecIdKvuxPJhiNXj/J623oT+aL4TT7rffCdAjrNmgTepiaJ5MlxyjhE/AsMkjNDCxZhMVe1RLo59kKEXga2sN7J3wKpR3qfHwDnbznl+yoQtK+K5hVW9Dz4v6X+KOJ3UYoBGz09oU+h3N9xgGGz8zpzB3BpRM17lMn8fGN51xQBX8BU7fXhrE2MHl5cE7OK X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(13015025)(13017025)(13018025)(13023025)(5005006)(8121501046)(13024025)(3002001)(10201501046);SRVR:AM4PR05MB1683;BCL:0;PCL:0;RULEID:;SRVR:AM4PR05MB1683; X-Microsoft-Exchange-Diagnostics: 1;AM4PR05MB1683;4:BBn31WXRgxnbAmiASk8vxMSj1/rAdsz6YDSLsp3XqOmfQT3DE5w2DgBkJuhDApvzz28iOSXhYX6DvYR4KjgwRKKKKUVxc7O1NElr1Y4bs0rdPxKMJtBWZ0sgO6vseUm0uUbGuSukv2si1m6ogvGwvRKmdGSaDXPlAqtKEqzNmv42Qm63vsLN3RI8xGu3mK0plIw0NlIop2FgWS4Eg7X9cjPqWU3QqmC/DkJDeBfwPdEYjAE3tVmU8gbwWkzUISVHRH0d27U5l42j/Aym+ENWHA+X5HPs4k0gRgM72Ea833Ed8n2L27QWYgBJakxGJZ/5ndEebsWdnJUboaJkrMJsKW0mp1WDpppsIA8v/ZWqUJ9YGsxrJx6VM/f+UTtZsJTyjGRI2pN49QVOiBo+3qRCw3UuwtJCMVXZ2Zdf2DfpTKkb2WrfH6JEsif1zBQ0KPNjxb9s0TI3KbcJSotHrMc5Ww== X-Forefront-PRVS: 087894CD3C X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM4PR05MB1683;23:RgamlZ1FTIBt/FDBK48xiogn7C38Su3bAMfbjmLT6?= =?us-ascii?Q?YYk7IJrKRBhgx4fOQUkyXKpPmA5/mzKaTIqEr3Kp9lMkeop/9vTjJXf5SdDl?= =?us-ascii?Q?UzJIAR8BlOUZj0Cg1w8XWOVLUh7jrrZt9cVryYHSRlBJRku2MzWTwfRCGn+M?= =?us-ascii?Q?RI8xC5H08TWeog+Jf0NWyI08VQZzQNLxt0Katvk9czRpcqKaMGNGy8CvY9kG?= =?us-ascii?Q?ZUPrnXFFIaMUeqYpb30wMMBLJZ3k4QPPMOkZdsz94hcEuHNs0iLP7m+QpjcB?= =?us-ascii?Q?QTamBwnVPpykUj5yfa2zLjD2HOM7VoJww9XKVahLFNdP9OKaufBdZChszzph?= =?us-ascii?Q?vEeB4iEugPkGQ4VspAhz07ojiIljkesbK/42+oleBmy8h0dvRb78r2+DFrCJ?= =?us-ascii?Q?opRXAm5WjMjjtSV6rzuHgbN7SXOZF+rs/Bsaciccw2LwvlrlwrpAUv27AT5e?= =?us-ascii?Q?jHqeIZ3LY2UuEfeZ8mzGub0yaimdlX2S9rJbX5Ny5WxCnlJavOs1ZR2+noD+?= =?us-ascii?Q?JdUXKZ+nKzMb25UYHQzl5c25xjFgEhXa4VNlQLPWMWs3yZh1Ow0I3OKoSalI?= =?us-ascii?Q?lwDUM4rqkziU3hhU8zjPCh5TLAndv0UH6nhoNPhJ5sPFzr95w9uWIynM5vTr?= =?us-ascii?Q?zgQW9/LzC08mRtHXqV/YkyLO4mew9QLpRT9ptvCusm/7LayVO64muhLZzlkr?= =?us-ascii?Q?PSWNb6z3AuH2pamRUlADlU+x4+Rl0YzcVam9n7GgLvn2O/ZkBFUWh+GKZdOu?= =?us-ascii?Q?OiEWrLsL6f/+VZAVr1WdrvZNE5rl+y0AoO0zGGBfmrohYRVBMXJ2PE3DXuUo?= =?us-ascii?Q?ffPpyTjKYMvh1o0Eo692V1gCuOHEIzDPSvqlp1RE6HXOtticiDvN9IL71TRo?= =?us-ascii?Q?Cu1XbHn+4NT2Jyho+AdBrHkDDrZkhal5p5r4K9ZOwAf7+BHQ/7pixbUqOSaq?= =?us-ascii?Q?AsgNkuzLbd2qAg3s+jefgEcfZN7QwRbNmVx31mSegF0SvgBhblTRhjNAEBXv?= =?us-ascii?Q?T61hr2OwNI5IGECo/y4Q3OkHemScUREAl/TTOQIH3ZAhGJYIZr782R6LVVgh?= =?us-ascii?Q?rL86oYTrnHsfjJPnLdy0MdulrtLpXTFTnHZw4LP/IdbZviI2RiFwi6iNYNpX?= =?us-ascii?Q?DP5bZnOiiuTnlvQQrcoyd/q9Afne068YBLS37sWfdY1oxChqlKsvUujpX0rj?= =?us-ascii?Q?0IvW5F/tYnsX7k=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM4PR05MB1683;5:UOdZYu0g82YCg5HmrhqJaNjOwgUKk7YhKsPRwYgmvfiYaSD8RWY9iEfCdrGFJcKbqdIH+alyc0u2AMKtIGYcMATbcsiJJ4mGNut4frzNqsY+LUnOKX6KxUuTlRklp9jc/699DzzF6vebaOJgju4hbg==;24:7/lVabCJKHJjb5dL9G4ypYBvakNTc6NJ342SncGGA15kqbGwypCZflO8yc2JTLLmbSBQEMnSUtwZ14qFoDDq1vjr/vLV6DBntx8GXhzY7w8= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Mar 2016 22:11:33.1616 (UTC) X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=a652971c-7d2e-4d9b-a6a4-d149256f461b;Ip=[12.216.194.146];Helo=[ld-1.internal.tilera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR05MB1683 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When this flag is set by the initial prctl(), the semantics of task isolation change to be "one-shot", i.e. as soon as the kernel is re-entered for any reason, task isolation is turned off. During application development, use of this flag is best coupled with STRICT mode, since otherwise any bug (e.g. an munmap from another thread in the same task causing an IPI TLB flush) could cause the task to fall out of task isolation mode without being aware of it. In production it is typically still best to use STRICT mode, with a signal handler that will report violations of task isolation up to the application layer. However, if you are confident the application will never fall out of task isolation mode, you may wish to use ONE_SHOT mode to allow switching from userspace task isolation mode, to using the kernel freely, without the small extra penalty of invoking prctl() explicitly to turn task isolation off before starting to use kernel services. Signed-off-by: Chris Metcalf --- include/uapi/linux/prctl.h | 1 + kernel/isolation.c | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/include/uapi/linux/prctl.h b/include/uapi/linux/prctl.h index a5582ace987f..1e204f1a0f4a 100644 --- a/include/uapi/linux/prctl.h +++ b/include/uapi/linux/prctl.h @@ -202,6 +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_ONE_SHOT (1 << 2) # define PR_TASK_ISOLATION_SET_SIG(sig) (((sig) & 0x7f) << 8) # define PR_TASK_ISOLATION_GET_SIG(bits) (((bits) >> 8) & 0x7f) diff --git a/kernel/isolation.c b/kernel/isolation.c index db281dee7d7e..d94a137e0349 100644 --- a/kernel/isolation.c +++ b/kernel/isolation.c @@ -202,7 +202,11 @@ void _task_isolation_exception(const char *fmt, ...) va_end(args); task_isolation_interrupt(task, buf); + return; } + + if (task->task_isolation_flags & PR_TASK_ISOLATION_ONE_SHOT) + task_isolation_set_flags(task, 0); } /* @@ -226,6 +230,9 @@ int task_isolation_syscall(int syscall) return -1; } + if (task->task_isolation_flags & PR_TASK_ISOLATION_ONE_SHOT) + task_isolation_set_flags(task, 0); + return 0; } -- 2.7.2