From: ebiederm@xmission.com (Eric W. Biederman)
To: Oleg Nesterov <oleg@redhat.com>
Cc: Will Drewry <wad@chromium.org>,
linux-kernel@vger.kernel.org,
Alexander Viro <viro@zeniv.linux.org.uk>,
Andrew Morton <akpm@linux-foundation.org>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Roland McGrath <roland@redhat.com>,
Neil Horman <nhorman@tuxdriver.com>,
Andi Kleen <andi@firstfloor.org>,
containers@lists.linux-foundation.org,
linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH][RFC] fs/exec.c: provide the correct process pid to the pipe helper
Date: Thu, 16 Sep 2010 13:12:31 -0700 [thread overview]
Message-ID: <m1zkvh4fdc.fsf@fess.ebiederm.org> (raw)
In-Reply-To: <20100916193543.GA11016@redhat.com> (Oleg Nesterov's message of "Thu, 16 Sep 2010 21:35:43 +0200")
Oleg Nesterov <oleg@redhat.com> writes:
> On 09/16, Will Drewry wrote:
>>
>> --- a/fs/exec.c
>> +++ b/fs/exec.c
>> @@ -1467,6 +1467,13 @@ static int format_corename(char *corename, long signr)
>> char *const out_end = corename + CORENAME_MAX_SIZE;
>> int rc;
>> int pid_in_pattern = 0;
>> + pid_t pid = task_tgid_vnr(current);
>> +
>> + /* The pipe helper runs in the init namespace and should
>> + * receive the matching pid until that changes.
>> + */
>> + if (ispipe)
>> + pid = task_tgid_nr(current);
>
> Agreed, it doesn't make sense to pass the "local" pid to the init ns.
Yes, passing the local pid to the init pid namespace doesn't make a lot
of sense. I have recently fixed unix domain sockets to avoid doing that
kind of silliness.
That said I don't think this is a complete fix. We also potentially
have the same issue with the uts namespace and the user namespace.
I believe the core file holds all of this information relative to the
process that is dying, one elf note or other so we don't need to worry
about information loss.
As for how to implement this for the pid case can we simply grab the
namespace at the ispipe stage and use task_tgid_nr_ns. Something like:
pid_ns = current->nsproxy->pid_ns;
if (is_pipe)
pid_ns = &init_pid_ns;
....
/* pid */
case 'p':
pid_in_pattern = 1;
rc = snprintf(out_ptr, out_end - out_ptr,
"%d", task_tgid_pid_nr_ns(pid_ns, current));
if (rc > out_end - out_ptr)
goto out;
out_ptr += rc;
break;
Will you were saying something about complex namespacing (in particular
the network namespace giving you problems). The network namespace has
no influence over pipes so how does that come into play?
I can imagine that it would be nice to have different core patterns
depending on where you are in the process tree, so a container can
do something different than the system outside of the container. Are
you thinking along those lines, or are you imagining something else?
Eric
next prev parent reply other threads:[~2010-09-16 20:12 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-16 18:59 [PATCH][RFC] fs/exec.c: provide the correct process pid to the pipe helper Will Drewry
2010-09-16 19:35 ` Oleg Nesterov
2010-09-16 20:12 ` Eric W. Biederman [this message]
2010-09-16 21:02 ` Will Drewry
2010-09-17 19:08 ` Roland McGrath
2010-09-17 13:26 ` Andi Kleen
2010-09-17 14:52 ` Will Drewry
2010-09-17 15:16 ` [PATCH 1/2] nsproxy: add copy_namespaces_unattached Will Drewry
2010-09-17 15:16 ` [PATCH 2/2] exec: move core_pattern pipe helper into the crashing namespace Will Drewry
2010-09-17 18:15 ` Neil Horman
2010-09-18 2:33 ` Will Drewry
2010-09-18 1:29 ` Oleg Nesterov
2010-09-18 2:34 ` Will Drewry
2010-09-18 3:14 ` Will Drewry
2010-09-20 18:50 ` Oleg Nesterov
2010-09-20 20:28 ` Will Drewry
2010-09-18 3:13 ` [PATCH][RFC] v2 " Will Drewry
2010-09-20 18:34 ` Eric W. Biederman
2010-09-20 19:12 ` Andi Kleen
2010-09-20 20:26 ` Will Drewry
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m1zkvh4fdc.fsf@fess.ebiederm.org \
--to=ebiederm@xmission.com \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=containers@lists.linux-foundation.org \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nhorman@tuxdriver.com \
--cc=oleg@redhat.com \
--cc=roland@redhat.com \
--cc=viro@zeniv.linux.org.uk \
--cc=wad@chromium.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox