From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932287AbdA3PLH (ORCPT ); Mon, 30 Jan 2017 10:11:07 -0500 Received: from mail-he1eur01on0134.outbound.protection.outlook.com ([104.47.0.134]:1760 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751467AbdA3PK5 (ORCPT ); Mon, 30 Jan 2017 10:10:57 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ktkhai@virtuozzo.com; Subject: Re: [PATCH 2/2] pidns: Expose task pid_ns_for_children to userspace To: , , , , , References: <148440326011.30622.12833059348082223242.stgit@localhost.localdomain> <148440329770.30622.16593902895676160550.stgit@localhost.localdomain> From: Kirill Tkhai Message-ID: <819a61cf-775c-81dc-35a1-c9c33c00ef3d@virtuozzo.com> Date: Mon, 30 Jan 2017 18:10:50 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Icedove/45.6.0 MIME-Version: 1.0 In-Reply-To: <148440329770.30622.16593902895676160550.stgit@localhost.localdomain> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: AM5PR0101CA0022.eurprd01.prod.exchangelabs.com (10.169.240.32) To VI1PR0802MB2287.eurprd08.prod.outlook.com (10.172.13.142) X-MS-Office365-Filtering-Correlation-Id: d4282cd1-9e88-4eaa-c87b-08d449222f39 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:VI1PR0802MB2287; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2287;3:hdUNeSD5mM6WC7yEzQWuGen5ivx8K+ZZI2bIbJxi29SSzaChrYYQs+gOE0FnOlPIfuFYG2v4/ItF0MRfbTRmOmD8LDWg3vG7CeI19SNBIZW/DsSpu9/4ajU55FMxVh6NdC2GiMgHOnUfNR3hDpMPm674ng5zsOfNxS+nNRk0smIw9DIaxTtzYmaXcByE6BG6GW+P4OpqwxU3Ktf+UPazr2gjsKAW3lyJqhYF7SDs8zHg7Zomno3fZJpasnjYCbakcXFbO5KtX3fXuuNCY1/DrA==;25:cVFIR2tliP5M+7Bm7tJvk+Ws19Dak7rm/XzP6YvimAPVv4udVuLbfXD80wmwV/1AIuq3xW4hMRY4IGM19gsgPTw/acklSXpjcJ5s147nPcJoUFryI8vX14hFvjSeUhvfv1fhJ9Z81Nmy/jDbIHt/2CARMFB24eAfMbQs0ldntwmidJlD9JkQhOrlZ8g4Hsv9qPZGgmLfS5AsNVQgOWl9aQIupXc3vw9YE4WC+ZlEkP2Eq0bcPBZfgwUzrjJ9q7hZZC80Dujr36l5ji8oz+UG7ZyNDD25uNMb5PBNJ/K/pwkD8EnuKf1vxYU5+3pIJYZbSoyj0NLMHXp09MhkGtWtrazaxOHIBWOdbcFtzINfN3GWckeRXjAdTAfrl25S/pgIm17LhGvVQO9847QQANhSz90ldTPMd75dfDa3BGTsFB1Zos/fSrRTfTLEYsRr2+7lKHeDXgpF/8wubAiJ3KxCGw== X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2287;31:PcvFvOXkZoFxvak6Z73RgQh18/tAHLzUxdi07XiIJF7cK9MggmqrxBSwHgU8b6AGoxMmlcQoJCVtPIOmS0Pp/sm0v2a/qHrH1Tmdx1qWivBoBSCoCGEneGdo5szN0UFXgyA1daEc2ZKmnXBlcQlmDazqDu6+fBT9fiP1NCpnGTrS9GxTnFURki2S2Ly64OZGWbplpWpFs/5qNejgU08dbFiTqfj6UxcDRy8onnscdPWUofe3XQTyDS3OeiZUuKIgxMRFMK7u8DxqWL4VInNbzg==;20:zOEfoGctFJkV+eLa2DQ9Ss50WWuOnsO0qb9mz5B7vUxk7HLnnSz6tPuDqnceJ7JI4SJtzW6jfyTLraDr+2A1ICkoYcoJK5AN01dAzY93iJ3fCAhl0ua6JeltNosmQMbOQZayH8Q64Vx7IXQDjb4VolwgQgsTSrPm1MLjTGW3m2W1otC/t2ILWgzo5H0oS6O1yvT1tVrthLxX8QGDc1F0Xm2QuJhNMiXv5QumyhGeYswc0uum0C3jJIDZmNlLct+W X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123564025)(20161123562025)(20161123555025)(20161123560025)(6072148);SRVR:VI1PR0802MB2287;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0802MB2287; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2287;4:ZCWIAsigu4KgwT4Z8igKa1wyKLsL64tjpbsJTYePIP0QUKJCBgIck2Y1Ln9GUCd8MoxDJ5BZLxVHw3GmmM/tmgz+qGPIWR1rKc8/TQugeeyrrn3Iet3kRQvXOkgfi7AnDdEfwWSTffepcHDncekJrxvNYM1d+iomSD/K9+++9HLlI2glYAenkWOXiwdLSpo/sBIQPbZI7SSYVCyIcpaeVOuugBIJKSDYwyKHZzV2Uvg+FmayBj9dQy4UAdGIPXxM4d+vfJb4aouQAcR0oM/qsPQFAjqAxHkFQ+Mfl5h+almpr3TjIGSMU0SR0e+T+4vsc3BOnJXfN2+7aZ+TZYHr80zutn6cBvs4wAnPiiOMMBTeFSQL12iT3FNmc2dZ7ALLYAWHKkrjO1fjzvoqo0kj3C05ytrORb4Q3RFP5ZugCpITRusLSe53ShUyhPiYNa/H3JPvXjUmqW17NuTVrHL7VVuCAbEFapeZOp8frEDsM+XvoJ9NOu4cCAWSwXmhzNpm7yLKibUxzceaoA+V/BrTy1tMKDfe0+Sma84+UwD6Qd7oHPjdISgf/kqt7P5gKO5LHCX0fBTsUZDqRjTbb1qggA== X-Forefront-PRVS: 0203C93D51 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(7916002)(39450400003)(189002)(24454002)(199003)(2906002)(31696002)(305945005)(5001770100001)(86362001)(2201001)(97736004)(4001350100001)(575784001)(66066001)(5660300001)(7736002)(47776003)(42186005)(64126003)(68736007)(107886002)(105586002)(2950100002)(106356001)(189998001)(31686004)(230700001)(38730400001)(23676002)(25786008)(53936002)(33646002)(50466002)(3846002)(83506001)(54356999)(76176999)(81166006)(81156014)(101416001)(8676002)(50986999)(6116002)(90366009)(229853002)(92566002)(77096006)(36756003)(6486002);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0802MB2287;H:[172.16.25.185];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjA4MDJNQjIyODc7MjM6a3lVdTZBUmI0elJ1NkVLQ3d3Zm50aTZ0?= =?utf-8?B?NWZJNFF5MGxkNmwvYlVrOTJST0tEeVVyV2dxYnRiM1N6bWlwbXVscWVOUU5r?= =?utf-8?B?eVRIS3JUQ1ZMVFNTS1k3ZVhoK3ZtU2piMFJnV20xd0hhQ1VnQ005L244TUFr?= =?utf-8?B?a2o2Z1MvTk1wNll2V0R6RGdWOWtpK2xSTmlzcG04OFhiY0MxcTc1NkdQZEkr?= =?utf-8?B?V29jSDhHbkFhWlAyVzRNc0xyUklYbkdJYWd6a2tWM1JBU05oYjZ6QjRQYmNz?= =?utf-8?B?cHkwUDVGNWw2R1NUa2VHNXpick9QamowNlRheGU4ZE5zV09jNU9aVng3Ym1x?= =?utf-8?B?WkxUQzdpdjhWdWQ2Z3V3NmhRdjdFYmM0REdOYWlvb2taZFgwaURNOGU1NVgv?= =?utf-8?B?UFdCTUxuaWtiUVZmQVA2YnRvcUlJSWdpZzBWWFJSQVQrVUpoa2RlcU9Mb3hR?= =?utf-8?B?YTcvMGNJYnAwUXZ5ZjJTeC81eSs3TVZWTGUzNGQrdEYvTFhWb0V0TCtnaGZB?= =?utf-8?B?WVRMcEozdG5ndFkySEtQQ09iN05vTjRVTm5xRlgxTkowcGhZV0NEbFRSZFZC?= =?utf-8?B?dDhYeWhDTlF0VVpNS3huaE0xUEM3K0JOLzE1ZEEvQUt5U0ZjaXB6RVNvZFQ5?= =?utf-8?B?ZEtlU0xwZWwza1NjOTlpV0dCTUsyUTdIWnN6MVFsblg2M1hlWWZtMG5pQXJh?= =?utf-8?B?Y0RNTm8xRE5vcjRJOFNrdXk4dUlGRzkrRWtyZWc1cGdPSzFybkVQN2J2dlZ6?= =?utf-8?B?YndUQU9oSWJ3ZnovMFV3WUtZWnlEOG5LbDhwcGRMcWI1ZjRyQ1hDZDY0VkJx?= =?utf-8?B?ZTUvZkgxVlBQeEZYZ0w4YUhDU1dQMlRjVFNUY09CbSthS0U1S3lLQ2FmSis3?= =?utf-8?B?V1NrVk1jc0ZhTHhjRVM5SThHNWU3Zm9sWVdEUkNpNWtXV0xCMUFBSkx2MkFL?= =?utf-8?B?bkFCemo2b01oQm5PNzMxQzlibC81K1dsNE53NERWdXloZGNWd0tGWVBwWnZt?= =?utf-8?B?ZGtTeGZ3Y0lyV09LY2Rtd290MzRJMXNpbEVuOWQ3QkpBQlc5disyK2F3N3BT?= =?utf-8?B?UkVqVGNuM2UreWdjc3NGTWUxaFN2UGhzek5oTEtmemVxUGlzQVRUZGRRRk9E?= =?utf-8?B?ZXhrZFlmZEovY1NuVk1QQ2duOWtsK3pYNVNyOVpGa0ZCS1pnandXY3BEd1VG?= =?utf-8?B?eklENU0xdVJZTWRzTXY3amEralRibG5PaE95b1BhdkVKd1F0SVBLMzNBU2JZ?= =?utf-8?B?cWUxRlBCSEd5TlBPS09hOXhkdG55a1NQbm5kQmlEdVQ0U0RFSVUyMFpLbnBS?= =?utf-8?B?R0pCTzZqckhCSUN0WjUydHkvU2czMXcvVnlsZVdDRmZ2encwV2RiVGxLWmpk?= =?utf-8?B?RmprbHJVUkhac0ljRFhUVXJHbk1tb0FOL1NKaTVXcW4wNjFGZFRYNjJzc3Er?= =?utf-8?B?elJ6TUtBMTdIOGM1azd1QTBSV1h6R2VtdWtPcE1hcSs3MHF4d2pHeTNTSnJz?= =?utf-8?B?VXI1czhGZ0h2TGE2MDRjb1FJMzVWUVBhMGRBaXN1REhENjhyT1ZqWHNTc3NE?= =?utf-8?B?UGgwZ0pnenlabjlHTmMwRlo5Y2wzQVZIMm40OG1FVE1rZVhCRE96OE5zOVFX?= =?utf-8?B?WjRReGJqcTU2QkJpSE9nWjhic0l0d0pKQ0NMQkdhUGEwTG0wb2Z3MzdZZE9G?= =?utf-8?B?ZEJrU1JOWkd4NWFURzZWSnY5eXJVOFdVcmcwdEdiMHJrWXV6VnJ5M1ZuRUpW?= =?utf-8?B?Snl1SWZGNEswRE5oTXBiOXpBPT0=?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2287;6:um1alyHVyDgfYnGwTfF3s3YAR2aM+5EiqkBNvhdPYnFPh9kSMa9WzCmoIOBO+1trVUtdkIkElU5fRC/INLjE/Wc8tPYms8Sezia80KzHAoqYg3dFwtmUWNSjhE9HBucGWV0l+OQnmCQp0gXZYz5381AF3O6BoM2aVC+0PSBcrq92OTs05MTfzuqmagN36JSE6/Dti8EAPADPs6sSoJZ/govWTJy9/ZjRhgJYcdlTmCMBSAqma/yRI+91DiaUsZDEq5BHNtaY6qHYR0MZnR9KOjtfkCaT4B4OIWwrahceAa4CTt1HA3i913nUNTttF/1JI2kHVFtzbClvaY3obLTtu4J62eQ4tmoMUr2b1HwTAh4SiQ3I2j006+55p7eYJUIjnsmHyU1Z0kwqCKpXG2y+I4iX4F0YK9dnYQITB9EH6F0=;5:HRu1V8nWq0pG58lyvPlvRIqXd6DkJQ5MAg9TIUSPD+rjaDehIMfJ1xFMffMW/Sultq6KgkR2xESIX6Le0HVezOd4jfyKOd+mSX0bCqvbJPcIG4gPN0ulpiL+r4aoFxqlHr3XS5N4Q568U9X1DcWZdL/XoLl0BewJd8csx+zDkdY=;24:6NcL0MuRwMCRG1qPqijX9yXoQjAmOoYcgqJ7+f3zz3FjqEykG/5XFYqOoLCf8F1JZq61AU7qymypSi7eHWXhpByD7oRjvGkE9SUP6V/FdRk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2287;7:y8DsUMagb6Rm1bfWg59lfUxSzuYh/65SotZZcj/Xn7ecoVYCHVh+wRdtFjMx60Yd6LESqw0xV33PwImL5C7w86GgoMi1TjrM80AyTWl2S3ep3jizUfgllhygRXB/mbx/A/jLgM4UJt+PAqicplCebzqNdxJ8VB0ladWVFLtUFBjv5l5PRHz1MoAu4YWO6ttbU+r94k8PVVMZtumE9NkzfdaU3fG5+wzQ7Moje5chuOM04Lb6wpzJDkT7W6muAN6yQJivDKTnnvbzeBR0U5QScS/CiSlqwq27F39vmtx3nI8uhalxj7U6SMgnOyCV6J5Vk6ona1/BlnnvXYgOurg/vWbSKHo36pHoHZgAXh8YzPCNohjgJ8iYGfnAxbkHe+EikhaX354GjzwGHS0WQebLxxvmL0vd4oWfyKBsf0+ONhoJg+ftjscAxJFuyimEryQSqWu4IEzI5zVbuklSIdd12g==;20:yvNZpjBmp9zE/mYxdOwGNaYHfi6fh9Qp/pgnm5WDLFimHKv+Ej89ZxOP7/TFRuoF0a/mt0t2Ceqxnd8437b8ksuXA9GKXNFXDoq+/vyqaqN7OshB+4oM8wSy3s6ORLhczc/pi/1rUTzKfS08rlZEkGZnfLVDsEa7WyG0hdRdWog= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2017 15:10:53.0739 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0802MB2287 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org ping On 14.01.2017 17:15, Kirill Tkhai wrote: > For correct checkpointing/restoring of a task from userspace > it's need to know the task's pid_ns_for_children. Currently, > there is no a sane way to do that (the only possible trick > is to force the task create a new child and to analize the > child's /proc/[pid]/ns/pid link, that is performance-stupid). > > The patch exposes pid_ns_for_children to ns directory > in standard way with the name "pid_for_children": > > ~# ls /proc/5531/ns -l | grep pid > lrwxrwxrwx 1 root root 0 Jan 14 16:38 pid -> pid:[4026531836] > lrwxrwxrwx 1 root root 0 Jan 14 16:38 pid_for_children -> pid:[4026532286] > > Signed-off-by: Kirill Tkhai > --- > fs/proc/namespaces.c | 1 + > include/linux/proc_ns.h | 1 + > kernel/pid_namespace.c | 25 +++++++++++++++++++++++++ > 3 files changed, 27 insertions(+) > > diff --git a/fs/proc/namespaces.c b/fs/proc/namespaces.c > index 766f0c637ad1..3803b24ca220 100644 > --- a/fs/proc/namespaces.c > +++ b/fs/proc/namespaces.c > @@ -23,6 +23,7 @@ static const struct proc_ns_operations *ns_entries[] = { > #endif > #ifdef CONFIG_PID_NS > &pidns_operations, > + &pidns_for_children_operations, > #endif > #ifdef CONFIG_USER_NS > &userns_operations, > diff --git a/include/linux/proc_ns.h b/include/linux/proc_ns.h > index 88dba3b53375..58ab28d81fc2 100644 > --- a/include/linux/proc_ns.h > +++ b/include/linux/proc_ns.h > @@ -27,6 +27,7 @@ extern const struct proc_ns_operations netns_operations; > extern const struct proc_ns_operations utsns_operations; > extern const struct proc_ns_operations ipcns_operations; > extern const struct proc_ns_operations pidns_operations; > +extern const struct proc_ns_operations pidns_for_children_operations; > extern const struct proc_ns_operations userns_operations; > extern const struct proc_ns_operations mntns_operations; > extern const struct proc_ns_operations cgroupns_operations; > diff --git a/kernel/pid_namespace.c b/kernel/pid_namespace.c > index df9e8e9e0be7..cbe950d4a11e 100644 > --- a/kernel/pid_namespace.c > +++ b/kernel/pid_namespace.c > @@ -369,6 +369,20 @@ static struct ns_common *pidns_get(struct task_struct *task) > return ns ? &ns->ns : NULL; > } > > +static struct ns_common *pidns_for_children_get(struct task_struct *task) > +{ > + struct pid_namespace *ns = NULL; > + > + task_lock(task); > + if (task->nsproxy) { > + ns = task->nsproxy->pid_ns_for_children; > + get_pid_ns(ns); > + } > + task_unlock(task); > + > + return ns ? &ns->ns : NULL; > +} > + > static void pidns_put(struct ns_common *ns) > { > put_pid_ns(to_pid_ns(ns)); > @@ -438,6 +452,17 @@ const struct proc_ns_operations pidns_operations = { > .get_parent = pidns_get_parent, > }; > > +const struct proc_ns_operations pidns_for_children_operations = { > + .name = "pid_for_children", > + .real_ns_name = "pid", > + .type = CLONE_NEWPID, > + .get = pidns_for_children_get, > + .put = pidns_put, > + .install = pidns_install, > + .owner = pidns_owner, > + .get_parent = pidns_get_parent, > +}; > + > static __init int pid_namespaces_init(void) > { > pid_ns_cachep = KMEM_CACHE(pid_namespace, SLAB_PANIC); >