From mboxrd@z Thu Jan 1 00:00:00 1970 From: ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org (Eric W. Biederman) Subject: Re: [PATCH RFC] procfs: add pidnr file Date: Wed, 26 Jun 2013 12:39:33 -0700 Message-ID: <877ghg4q6i.fsf@xmission.com> References: <20130626161820.GA32142@tp> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20130626161820.GA32142@tp> (Serge Hallyn's message of "Wed, 26 Jun 2013 11:18:20 -0500") List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: Serge Hallyn Cc: Colin Ian King , containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, =?utf-8?Q?St=C3=A9phane?= Graber List-Id: containers.vger.kernel.org U2VyZ2UgSGFsbHluIDxzZXJnZS5oYWxseW5AdWJ1bnR1LmNvbT4gd3JpdGVzOgoKPiBBZGQgYSBm aWxlIGNhbGxlZCBwaWRuciB1bmRlciAvcHJvYy90YXNrLy4gIFJlYWRpbmcgdGhpcyBmaWxlIGdp dmVzIHRoZQo+IHBpZCBvZiAvcHJvYy90YXNrIGluIHRoZSByZWFkaW5nIHRhc2sncyBuYW1lc3Bh Y2UgKG9yIDAgaWYgdGhlcmUgaXMgbm8KPiB2YWxpZCBwaWQpLgo+Cj4gVGhpcyBmaWxscyBhIG5l ZWQgY3VycmVudGx5IG5vdCBzb2x2YWJsZSBhdCBhbGwuICBUaGUgcGFydGljdWxhciBuZWVkIEkK PiBoYXZlIGZvciBpdCBpcyBzbyB0aGF0IGEgdGFzayBpbnNpZGUgYSBjb250YWluZXIgY2FuIHBh c3MgcmVxdWVzdHMgdG8gYQo+IHRhc2sgb3V0c2lkZSB0aGUgY29udGFpbmVyICh1c2luZyBhbiBv cGVuIGZkIGZvciAvcHJvYy90YXNrKSB0byBoYXZlIHRoZQo+IHRhcmdldCB0YXNrIG1vdmVkIHRv IGEgbmV3IGNncm91cC4gIE90aGVycyBoYXZlIGFza2VkIGZvciB0aGlzIGFiaWxpdHkKPiBmb3Ig b3RoZXIgcmVhc29ucy4KClRoaXMgaXMgc29sdmFibGUgdG9kYXkuICBKdXN0IHBhc3MgdGhlIHBp ZCB1c2luZyBTQ01fQ1JFREVOVElBTFMgb3ZlciBhCnVuaXggZG9tYWluIHNvY2tldCBiZXR3ZWVu IHRoZSB0d28gcHJvY2Vzc2VzLiAgVGhhdCBpcyBhY3R1YWxseSBiZXR0ZXIKYmVjYXVzZSBhIHRh c2sgY2FuJ3QgY2xhaW0gdG8gYmUgYSBtZW1iZXIgb2YgYW5vdGhlciB0YXNrLiAgWW91IGFscmVh ZHkKaGF2ZSB0aGUgdW5peCBkb21haW4gc29ja2V0IGlmIHlvdSBhcmUgdXNpbmcgU0NNX1JJR0hU UyB0byBwYXNzIGZpbGUKZGVzY3JpcHRvcnMuCgpPaCBpY2suICBZb3UgaGF2ZSBhIGZpbGUgd2hv c2UgY29udGVudHMgY2hhbmdlIGRlcGVuZGluZyBvbiB3aG8gaXMKcmVhZGluZyBhbiBvcGVuIGZp bGUgZGVzY3JpcHRvci4gIFRoYXQgY2FuIGdldCByYXRoZXIgdWdseS4gIEl0IGlzCmJldHRlciBm b3IgdGhlIGNvbnRlbnRzIHRvIGJlIGNvbnN0YW50IGFuZCBiYXNlZCB1cG9uIHdoZW4gdGhlIGZp bGUgd2FzCm9wZW5lZC4KCkkgYWxzbyBkb24ndCBsaWtlIHRoZSBuYW1lLiAgTm90aGluZyBhYm91 dCB0aGUgbmFtZSBzYXlzIHRvIG1lIHRoaXMgaXMKdGhlIHRhc2tzIHBpZCBmcm9tIHRoZSByZWFk aW5nIHRhc2tzIHBlcnNwZWN0aXZlLgoKSSBkbyBzeW1wYXRoaXplIHdpdGggdGhlIHByb2JsZW0g YW5kIEkgdGhpbmsgdGhpcyBwYXRjaCBjb3VsZCBiZSBvbgp0aGUgcmlnaHQgdHJhY2suCgpFcmlj Cgo+IFNpZ25lZC1vZmYtYnk6IFNlcmdlIEhhbGx5biA8c2VyZ2UuaGFsbHluQGNhbm9uaWNhbC5j b20+Cj4gQ2M6IEVyaWMgQmllZGVybWFuIDxlYmllZGVybUB4bWlzc2lvbi5jb20+Cj4gQ2M6ICJE YW5pZWwgUC4gQmVycmFuZ2UiIDxiZXJyYW5nZUByZWRoYXQuY29tPgo+IENjOiBjb250YWluZXJz QGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCj4gQ2M6IENvbGluIElhbiBLaW5nIDxjb2xpbi5r aW5nQGNhbm9uaWNhbC5jb20+Cj4gQ2M6IFN0w6lwaGFuZSBHcmFiZXIgPHN0Z3JhYmVyQHVidW50 dS5jb20+Cj4gLS0tCj4gIGZzL3Byb2MvYmFzZS5jIHwgICAyNSArKysrKysrKysrKysrKysrKysr KysrKystCj4gIDEgZmlsZSBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p Cj4KPiBkaWZmIC0tZ2l0IGEvZnMvcHJvYy9iYXNlLmMgYi9mcy9wcm9jL2Jhc2UuYwo+IGluZGV4 IGMzODM0ZGEuLmI3NDk5ZWIgMTAwNjQ0Cj4gLS0tIGEvZnMvcHJvYy9iYXNlLmMKPiArKysgYi9m cy9wcm9jL2Jhc2UuYwo+IEBAIC04OTksNiArODk5LDI4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZmlsZV9vcGVyYXRpb25zIHByb2NfZW52aXJvbl9vcGVyYXRpb25zID0gewo+ICAJLnJlbGVhc2UJ PSBtZW1fcmVsZWFzZSwKPiAgfTsKPiAgCj4gKyNkZWZpbmUgVE1QQlVGTEVOIDIxCj4gK3N0YXRp YyBzc2l6ZV90IHBpZG5yX3JlYWQoc3RydWN0IGZpbGUgKiBmaWxlLCBjaGFyIF9fdXNlciAqIGJ1 ZiwKPiArCQkJCSAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpCj4gK3sKPiArCXN0cnVjdCBp bm9kZSAqIGlub2RlID0gZmlsZV9pbm9kZShmaWxlKTsKPiArCXN0cnVjdCB0YXNrX3N0cnVjdCAq dGFzayA9IGdldF9wcm9jX3Rhc2soaW5vZGUpOwo+ICsJc3NpemVfdCBsZW5ndGg7Cj4gKwljaGFy IHRtcGJ1ZltUTVBCVUZMRU5dOwo+ICsKPiArCWlmICghdGFzaykKPiArCQlyZXR1cm4gLUVTUkNI Owo+ICsJbGVuZ3RoID0gc2NucHJpbnRmKHRtcGJ1ZiwgVE1QQlVGTEVOLCAiJXVcbiIsCj4gKwkJ CXRhc2tfcGlkX3Zucih0YXNrKSk7Cj4gKwlwdXRfdGFza19zdHJ1Y3QodGFzayk7Cj4gKwlyZXR1 cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIoYnVmLCBjb3VudCwgcHBvcywgdG1wYnVmLCBsZW5n dGgpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwaWRu cl9vcGVyYXRpb25zID0gewo+ICsJLnJlYWQJCT0gcGlkbnJfcmVhZCwKPiArCS5sbHNlZWsJCT0g Z2VuZXJpY19maWxlX2xsc2VlaywKPiArfTsKPiArCj4gIHN0YXRpYyBzc2l6ZV90IG9vbV9hZGpf cmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNvdW50LAo+ ICAJCQkgICAgbG9mZl90ICpwcG9zKQo+ICB7Cj4gQEAgLTEwOTYsNyArMTExOCw2IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2Nfb29tX3Njb3JlX2Fkal9vcGVyYXRp b25zID0gewo+ICB9Owo+ICAKPiAgI2lmZGVmIENPTkZJR19BVURJVFNZU0NBTEwKPiAtI2RlZmlu ZSBUTVBCVUZMRU4gMjEKPiAgc3RhdGljIHNzaXplX3QgcHJvY19sb2dpbnVpZF9yZWFkKHN0cnVj dCBmaWxlICogZmlsZSwgY2hhciBfX3VzZXIgKiBidWYsCj4gIAkJCQkgIHNpemVfdCBjb3VudCwg bG9mZl90ICpwcG9zKQo+ICB7Cj4gQEAgLTI2NDIsNiArMjY2Myw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgcGlkX2VudHJ5IHRnaWRfYmFzZV9zdHVmZltdID0gewo+ICAJRElSKCJuZXQiLCAgICAg ICAgU19JUlVHT3xTX0lYVUdPLCBwcm9jX25ldF9pbm9kZV9vcGVyYXRpb25zLCBwcm9jX25ldF9v cGVyYXRpb25zKSwKPiAgI2VuZGlmCj4gIAlSRUcoImVudmlyb24iLCAgICBTX0lSVVNSLCBwcm9j X2Vudmlyb25fb3BlcmF0aW9ucyksCj4gKwlSRUcoInBpZG5yIiwgICAgICBTX0lSVUdPLCBwaWRu cl9vcGVyYXRpb25zKSwKPiAgCUlORigiYXV4diIsICAgICAgIFNfSVJVU1IsIHByb2NfcGlkX2F1 eHYpLAo+ICAJT05FKCJzdGF0dXMiLCAgICAgU19JUlVHTywgcHJvY19waWRfc3RhdHVzKSwKPiAg CU9ORSgicGVyc29uYWxpdHkiLCBTX0lSVUdPLCBwcm9jX3BpZF9wZXJzb25hbGl0eSksCj4gQEAg LTI5OTksNiArMzAyMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IHRpZF9iYXNl X3N0dWZmW10gPSB7Cj4gIAlESVIoImZkaW5mbyIsICAgIFNfSVJVU1J8U19JWFVTUiwgcHJvY19m ZGluZm9faW5vZGVfb3BlcmF0aW9ucywgcHJvY19mZGluZm9fb3BlcmF0aW9ucyksCj4gIAlESVIo Im5zIiwJIFNfSVJVU1J8U19JWFVHTywgcHJvY19uc19kaXJfaW5vZGVfb3BlcmF0aW9ucywgcHJv Y19uc19kaXJfb3BlcmF0aW9ucyksCj4gIAlSRUcoImVudmlyb24iLCAgIFNfSVJVU1IsIHByb2Nf ZW52aXJvbl9vcGVyYXRpb25zKSwKPiArCVJFRygicGlkbnIiLCAgICAgU19JUlVHTywgcGlkbnJf b3BlcmF0aW9ucyksCj4gIAlJTkYoImF1eHYiLCAgICAgIFNfSVJVU1IsIHByb2NfcGlkX2F1eHYp LAo+ICAJT05FKCJzdGF0dXMiLCAgICBTX0lSVUdPLCBwcm9jX3BpZF9zdGF0dXMpLAo+ICAJT05F KCJwZXJzb25hbGl0eSIsIFNfSVJVR08sIHByb2NfcGlkX3BlcnNvbmFsaXR5KSwKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQ29udGFpbmVycyBtYWlsaW5n IGxpc3QKQ29udGFpbmVyc0BsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3Rz LmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9jb250YWluZXJz From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752774Ab3FZTkM (ORCPT ); Wed, 26 Jun 2013 15:40:12 -0400 Received: from out01.mta.xmission.com ([166.70.13.231]:33711 "EHLO out01.mta.xmission.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752307Ab3FZTkK convert rfc822-to-8bit (ORCPT ); Wed, 26 Jun 2013 15:40:10 -0400 From: ebiederm@xmission.com (Eric W. Biederman) To: Serge Hallyn Cc: linux-kernel@vger.kernel.org, "Daniel P. Berrange" , containers@lists.linux-foundation.org, Colin Ian King , =?utf-8?Q?St=C3=A9phane?= Graber References: <20130626161820.GA32142@tp> Date: Wed, 26 Jun 2013 12:39:33 -0700 In-Reply-To: <20130626161820.GA32142@tp> (Serge Hallyn's message of "Wed, 26 Jun 2013 11:18:20 -0500") Message-ID: <877ghg4q6i.fsf@xmission.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT X-XM-AID: U2FsdGVkX18hxoOXUI+haeDWK0br5tCZ9YsIu5msO3U= X-SA-Exim-Connect-IP: 98.207.154.105 X-SA-Exim-Mail-From: ebiederm@xmission.com X-Spam-Report: * -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP * 0.0 T_TM2_M_HEADER_IN_MSG BODY: T_TM2_M_HEADER_IN_MSG * -0.0 BAYES_40 BODY: Bayes spam probability is 20 to 40% * [score: 0.3813] * -0.0 DCC_CHECK_NEGATIVE Not listed in DCC * [sa06 1397; Body=1 Fuz1=1 Fuz2=1] * 1.0 T_XMDrugObfuBody_08 obfuscated drug references X-Spam-DCC: XMission; sa06 1397; Body=1 Fuz1=1 Fuz2=1 X-Spam-Combo: ;Serge Hallyn X-Spam-Relay-Country: Subject: Re: [PATCH RFC] procfs: add pidnr file X-Spam-Flag: No X-SA-Exim-Version: 4.2.1 (built Wed, 14 Nov 2012 14:26:46 -0700) X-SA-Exim-Scanned: Yes (on in01.mta.xmission.com) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Serge Hallyn writes: > Add a file called pidnr under /proc/task/. Reading this file gives the > pid of /proc/task in the reading task's namespace (or 0 if there is no > valid pid). > > This fills a need currently not solvable at all. The particular need I > have for it is so that a task inside a container can pass requests to a > task outside the container (using an open fd for /proc/task) to have the > target task moved to a new cgroup. Others have asked for this ability > for other reasons. This is solvable today. Just pass the pid using SCM_CREDENTIALS over a unix domain socket between the two processes. That is actually better because a task can't claim to be a member of another task. You already have the unix domain socket if you are using SCM_RIGHTS to pass file descriptors. Oh ick. You have a file whose contents change depending on who is reading an open file descriptor. That can get rather ugly. It is better for the contents to be constant and based upon when the file was opened. I also don't like the name. Nothing about the name says to me this is the tasks pid from the reading tasks perspective. I do sympathize with the problem and I think this patch could be on the right track. Eric > Signed-off-by: Serge Hallyn > Cc: Eric Biederman > Cc: "Daniel P. Berrange" > Cc: containers@lists.linux-foundation.org > Cc: Colin Ian King > Cc: Stéphane Graber > --- > fs/proc/base.c | 25 ++++++++++++++++++++++++- > 1 file changed, 24 insertions(+), 1 deletion(-) > > diff --git a/fs/proc/base.c b/fs/proc/base.c > index c3834da..b7499eb 100644 > --- a/fs/proc/base.c > +++ b/fs/proc/base.c > @@ -899,6 +899,28 @@ static const struct file_operations proc_environ_operations = { > .release = mem_release, > }; > > +#define TMPBUFLEN 21 > +static ssize_t pidnr_read(struct file * file, char __user * buf, > + size_t count, loff_t *ppos) > +{ > + struct inode * inode = file_inode(file); > + struct task_struct *task = get_proc_task(inode); > + ssize_t length; > + char tmpbuf[TMPBUFLEN]; > + > + if (!task) > + return -ESRCH; > + length = scnprintf(tmpbuf, TMPBUFLEN, "%u\n", > + task_pid_vnr(task)); > + put_task_struct(task); > + return simple_read_from_buffer(buf, count, ppos, tmpbuf, length); > +} > + > +static const struct file_operations pidnr_operations = { > + .read = pidnr_read, > + .llseek = generic_file_llseek, > +}; > + > static ssize_t oom_adj_read(struct file *file, char __user *buf, size_t count, > loff_t *ppos) > { > @@ -1096,7 +1118,6 @@ static const struct file_operations proc_oom_score_adj_operations = { > }; > > #ifdef CONFIG_AUDITSYSCALL > -#define TMPBUFLEN 21 > static ssize_t proc_loginuid_read(struct file * file, char __user * buf, > size_t count, loff_t *ppos) > { > @@ -2642,6 +2663,7 @@ static const struct pid_entry tgid_base_stuff[] = { > DIR("net", S_IRUGO|S_IXUGO, proc_net_inode_operations, proc_net_operations), > #endif > REG("environ", S_IRUSR, proc_environ_operations), > + REG("pidnr", S_IRUGO, pidnr_operations), > INF("auxv", S_IRUSR, proc_pid_auxv), > ONE("status", S_IRUGO, proc_pid_status), > ONE("personality", S_IRUGO, proc_pid_personality), > @@ -2999,6 +3021,7 @@ static const struct pid_entry tid_base_stuff[] = { > DIR("fdinfo", S_IRUSR|S_IXUSR, proc_fdinfo_inode_operations, proc_fdinfo_operations), > DIR("ns", S_IRUSR|S_IXUGO, proc_ns_dir_inode_operations, proc_ns_dir_operations), > REG("environ", S_IRUSR, proc_environ_operations), > + REG("pidnr", S_IRUGO, pidnr_operations), > INF("auxv", S_IRUSR, proc_pid_auxv), > ONE("status", S_IRUGO, proc_pid_status), > ONE("personality", S_IRUGO, proc_pid_personality),