From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751203AbdAQUAa (ORCPT ); Tue, 17 Jan 2017 15:00:30 -0500 Received: from mail-he1eur01on0129.outbound.protection.outlook.com ([104.47.0.129]:31283 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750893AbdAQUA0 (ORCPT ); Tue, 17 Jan 2017 15:00:26 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=avagin@virtuozzo.com; Date: Tue, 17 Jan 2017 12:00:09 -0800 From: Andrei Vagin To: Kirill Tkhai CC: , , , , , , , Michael Kerrisk Subject: Re: [PATCH 2/2] pidns: Expose task pid_ns_for_children to userspace Message-ID: <20170117200008.GA12788@outlook.office365.com> References: <148440326011.30622.12833059348082223242.stgit@localhost.localdomain> <148440329770.30622.16593902895676160550.stgit@localhost.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset="koi8-r" Content-Disposition: inline In-Reply-To: <148440329770.30622.16593902895676160550.stgit@localhost.localdomain> User-Agent: Mutt/1.7.1 (2016-10-04) X-Originating-IP: [67.183.159.197] X-ClientProxiedBy: BN6PR08CA0063.namprd08.prod.outlook.com (10.172.144.25) To VI1PR0801MB1984.eurprd08.prod.outlook.com (10.173.74.17) X-MS-Office365-Filtering-Correlation-Id: 174d9098-f89d-418e-7824-08d43f1378a2 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:VI1PR0801MB1984; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1984;3:fCIhSOywVqkm5gcuNrMdjC2tC7UffetNbUmrMqmxNCPrAIPJ71QQIi9xnBQry4GO24RD7H0GprIcV0+lnIP7Iu6udN47BE7LwIHklaPuHQTr3G31OPKnqKTknooH4xT3W9xDYlWd+XHpxoXnN/rkk/iHoU4JLvlXCk2K6+8eerIRXNszbTmHDcMaNdx6KjtCp7kZP0FWeXxkkeaZaATSlULEwTXK+ge0SvF/mdxRAzZdsdA1XbDZUM1suWR6e5bClaURjiOsxffrvlLbEBlNdg==;25:ADeTibZh3V57aZDA75AKNHVIQyNfdiYPr92zqQn6aAPuLtWq6Fu38BPnbd628n2IWkcMxqcMLQQtrJbzSJvlOG5pYv+OKZYEYPSq/eSNx4FJGVWgdmEaE9NQhgEWjIWYc0cJvQvTMOaDmzidwDQHCnHeA3629fpv0IyxS3ad38MGWKT7mEsVFsmisPfmd3GFHukP8SMkoU4FOSK71XI/wKa7m4GNDJPqLmmMPxpGyGJ5UlxH8pSPlpOZtVyt1iY71+rUfg186U7Y0BPncfFnFh4lWyzfotBjn6z6ANvOebqaWmN4BRnqzLZFOihIdPKoKGBCxVmMiPlEfxzjz85n6SLkY/yhu8J8VmtRJIInmuyJBizWMy5EA11MyY3J5CGXOhdcFy/0b6vUI0HWnY3QPtr7EFvurlIRAGtYHCYbe/JZjMivY+RZp8ERu6MnlKNOGLoMiHqjD6wgXzg3E9v6bw== X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1984;31:fvRlq1EpjHLE3XUGdvBaFf/+LyomNN4r8z13AfAGa8Gu+YEuDw3LJ7klrfMvbGSrs/bYEkB2Plym4w29O3dMUKN89V+uY/x5JNy5tc38wLao2gsGg3RzPEuxiBKUGwynwbnwb6NlDJSw32XaDujmHY1GYwWwwbmcMAjgpL99gVWDlqntYhHlJkUTPkoWifpPG5eZBVo1h73MkQQj9hZpnL11AidDRyArD/BK9xWgnPNVrJGz5HrAihKpkkiNftCqraqTqE04zLw9kqXmsyGAqw==;20:wcuLNPtGChsMGGvsYfyZtZvckpETQOnIjpIJdRbImwmCd5/7C/6uvrKiX5U19zJuBZ1RbQivdUz7/xLk6T0Cf0A8WVWJKt4x2sXagE+8Wvwk30RClgneE3/onMc+3LGqC6lQIw9RfjX03Si/XXO3Md5eBQ1VMZjUjJ+x3IGlG/gPNxlv0e0LLToTSAUZ3VwPuC+9iM6Z5pt16kXguRWzcmfuUeWqI9V0kASEVp1D2387svgimy19TICgwFeVP4cN X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6041248)(20161123560025)(20161123564025)(20161123555025)(20161123562025)(6072148);SRVR:VI1PR0801MB1984;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB1984; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1984;4:12sd+zPtuS90uUggOcsbMZcq0W5T531L+yGaDdbss8RaUATa7EFG8n6BIYTAeviEfPmeNCNA7gIaTQjLC0C5ebs/klxxJeh9Tf0UQfbqWofpz9mu+W5ENMyran5NU0zWFr3Ye0sFwt1bi1zLAknzf9mlNc25jB99BbRPXaScCLt4Iw3L/0+x75BEvxvdE+IAUDKjtoXdFtRcDQxJnsHF8CdMF8jTMNjnUoXFRfoZ2K0WEQz19+KR1aJmtZIsob8AM34JO8XKwlN9Sx3ucMRROIMrWRfc66yPPuHKw1WD92Q/YWecBYK0P1ke3XsB9qC5R/adkCMQrcEmPBXtohMIhlP+FAoiKFA1ASMCanBpAQvI/l25d1caVE0nj6SbMD8jKBoYVZcbi3480OA/K/ETsuaCFLJnJmw0me+XIhSzgw/USh8AKFPLfeYrEC7CtoMjx3Bqi87OKtGwpA4+eGdQefo1zrlw/y7gGzKd054vIl1JJLpp8RsPeGvqumgf5fvXitVbTZL4oQz9CZEERjuQQh0jvQ2/TQkV4Tbz2TjUQRZdulBFlqIKhxLiGdNfQqQl X-Forefront-PRVS: 01901B3451 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(39450400003)(39410400002)(39830400002)(199003)(24454002)(189002)(110136003)(5660300001)(3846002)(97736004)(101416001)(6862003)(6116002)(9686003)(92566002)(6666003)(2950100002)(50986999)(305945005)(76176999)(53936002)(83506001)(189998001)(7736002)(4001350100001)(1076002)(54356999)(33656002)(53416004)(55016002)(106356001)(47776003)(68736007)(42186005)(69596002)(105586002)(54906002)(4326007)(25786008)(23686003)(6506006)(2906002)(66066001)(6636002)(39060400001)(81156014)(575784001)(229853002)(8676002)(86362001)(50466002)(81166006)(38730400001)(18370500001)(26326002);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0801MB1984;H:outlook.office365.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?koi8-r?Q?1;VI1PR0801MB1984;23:WNQO8KwSO+wHZxkI2W8ZiY6cdZ7z/lOmFGZIGjscK?= =?koi8-r?Q?Cq9TU7BL0IrhNzCO8cS67HPqLWjvz8r2kbvv3H7tPm00oDGG62iToyAenMvRF6?= =?koi8-r?Q?ZH3uDphp2Qgh2b7Le3wVTLvoVc54cJDekxfaMxzLIqeBRn/RRPwKtU+OvZaA98?= =?koi8-r?Q?1q697D90MYChDQeizo3gAfuV9XKYqWPbsmCMpURZgFljW0AMUKhFu0qrghdj+D?= =?koi8-r?Q?qxaQwNbvfLbiOhytqSswyuivCZ/ERcZ/r71TfZE4NigjdcKmaYE1FNE7alv7AE?= =?koi8-r?Q?8RLiTCJf/ycFyR3j73nOkGAKElGbwmPBtI6TkLev8TM1VXR+LfEaU5rdqTkkTW?= =?koi8-r?Q?KuWmqC9A0lUwgK6sEA0PwQeGJvHcTz8BGmoEEdg/shGm0OP74VIDhGrlSF/oZa?= =?koi8-r?Q?x1udSlsY6Abih4zpFgyHeET0QYGr2cd+uA6B8nWAkQRde11fJCVkQxB+c62hdt?= =?koi8-r?Q?ErKAaIL8CDwA9zLyl5N6mboOmTj1w4xrC4il8tc9A9o228hbTAkVFg5f1cpOcj?= =?koi8-r?Q?6MGzJffnrVtsYP5RHQaW7ESr10I2CKPw0KUL7vbt+QqYdBnWfWe+AJiMe3bxjI?= =?koi8-r?Q?+kWPgRj1XE9EVleshQ0SdfAv4+PW/OHmZaStE1eF5c/LVr2UgbA8JLQW6f4F1t?= =?koi8-r?Q?VwV43c/HwG0peghzeFhbNSF+XEAvdUnO1hJytAEXjxR4DAO/FtolqZU/O2KP9E?= =?koi8-r?Q?+1bwCJ/i1TgIP1C+RZQhG1OPvXu8V1Nmn5Ec5nolzfTtp7uFjLh+1Z0oAVD7QC?= =?koi8-r?Q?gY/yCOc83vOCcf5Y0WKHXsK791bBNMnXMXsk3ayqa4ssI5mDowwHAZdmNP1w2c?= =?koi8-r?Q?PibPYocl1pc5qw2a2Pr7tPvSCLQr1ztWtdOiJ0r+A55QCZ88BC+/W+qP91xLM8?= =?koi8-r?Q?vQRwjYHfntFN9quXNxpZGo9P9ECKRIrCqGo2xQo6dC4CdNsSYW7dhSRpakAdZa?= =?koi8-r?Q?RPQcXKr9Sw1k1q/BrTs82PpYTlyunvDU7F+8hQpygpcm1T1uaitbFsg2mFCve4?= =?koi8-r?Q?msUl1jzOHIaX+s0QIDlg17QpdrN4L0lxWoh5YbhCz3ihofPIyegXrOBWBtQaOI?= =?koi8-r?Q?6OIco20vKxKrgf5Q9CiJzuZPzQiw6DPDDhBgMdCyH95aW01//lSEqzApo4XED0?= =?koi8-r?Q?GnGkPy9DIVEOGOErKBWXcNqPdUMRJ7nzaJFPBUk9g4n+0/3/IG9FKiu/HgnIXW?= =?koi8-r?Q?F4nUQ5svM0uU+OIgWI3lOvY7kAEmCVFigJ2m0T6dcTer3WCPeOyV8RHUqJxd5m?= =?koi8-r?Q?czr6oBX7ppHV9KRDjjS9KnXfgrTcRx0rqhnJ9+e++xCguooNiK34O89mLbxR0N?= =?koi8-r?Q?TL14ua1T41Ev5W9V7x0oYEjniHlFDni7/cx7ocs//DSSGRv9YfyrXEzwk92prw?= =?koi8-r?Q?2ue?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1984;6:1qzFbT40l3OQdSqgcHBotHqv+7EnkwCZN71wJBoNH9X3QTRtC0J90K+OAYs2kEfEJbLvMm0BavdpFqZDwFFBl+WD6W2nkAEeoMnOM8CY8ZW0bjHpTWuOR3j/iGfTrbXu5vYWRdP3l8nJ2/96GAHs7JtALlA7q77lioHbf+VQ2z8PUEx3/HaCTFdOxSODhEVeXjomgvP+QmuhvWqYZ1vuvIR9lu1fmDsDUdSx9IzpLF+eNignAd/yGMUDbOHHKYHy6ua06vOYsq7MZzxu2w5Aa6M69GmzNhIYh+ACVXj2lm6Y0/Qnd0o0i1f+vJolHFo+8zA0KUNMvlJIJWpCmeLiv0aMfz1uL1i4YlAVrY5JexIZKYgJYweYd9eL7FErPLgR5ma14fU6I95+k8J8V/RDktdMHV/SWUwBfC6dvwUVNkk=;5:NrI9kTXXw8nEqbq4hilXjuzPG+F8b7yvfJJRWAqRV9qq8aTozR0FeTuYWZ9rUiDrF8Xs5fd8OcI2+1Y9I1uyt67dPFHo4Q1SDAz5HwRjVmFKXbKmu7dryqUwu2u0R8HRZWWp2zrsAvp3EnEjlrJvgA==;24:oLSpZO6zn1feiA6t7WKi9yS3gRUYyh+UJzwfbVQpq7UhOpxEEjPyfwOVgqcGbdx7KE8BKtFanj+tK+XzMb/mH6TDTSEmAIRFzZ+BcKmTVPA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1984;7:H1UeeCFc4pfGIXjEqi/RMaoIgoXX/S8MnFnMaR7zU6bVfaedW6y2+b5vpvs1R+x2M8hvjUG1vzPR9lsd9XeX+yGOjtXrazxg/bGimyU8JxGMPeua7+PgjUYhOspHmhUKYn0C6CMwIJTTGDWGVXjmiincf/ecCWyzpYNu/Z5i1FldWDF7WoCD2Ue2x4g4Zge8NhNTnpPzeqf5W3nrhAWZLCtTwUjKS2iqsPwEzTZbsJvj+LYbg4YNaw8cxyb/UeFnH43qV4zga7K9SWaH3poihHdte4mveRWgdOWyOum7wS/wXAgIQrWsiqa4jhQPFZIfaL34Hw9whoJ+E4aRSZAuvz3OO7WuYCRCeYw/WKJ7jhwT7ehnoeicRO6iHFrC/4Qtm3GdtqKWjqWXWwB9wFaOL3paNYjPiDuHNNOkRi4Qi96zn829P9HG/pMFbSJR9TRrvFUxaHNKjMZgHuU9t5yMiw==;20:SPdabbGYmjeG4PerbmIpfBWI6gcaOHlKhHKA/JUsHeNrAybhnGPvxONIl5qfZenjW9Grno+ESqLP2DRbqBeMaCiPRdE/nsoiE4hUwm2zlLMOZIVdBCBx5O03sche6V4ayyePIDrDz0Vgs4kFhRR8+A9g8RGk+NYWAdo1yNbG/f0= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2017 20:00:19.8030 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1984 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Jan 14, 2017 at 05:15:04PM +0300, 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] > Cc: linux-api, Michael Kerrisk Acked-by: Andrei Vagin > 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); >