From: ebiederm@xmission.com (Eric W. Biederman)
To: "Serge E. Hallyn" <serue@us.ibm.com>
Cc: linux-kernel@vger.kernel.org, Kirill Korotaev <dev@sw.ru>,
herbert@13thfloor.at, devel@openvz.org, sam@vilain.net,
xemul@sw.ru, James Morris <jmorris@namei.org>
Subject: Re: [PATCH 3/7] uts namespaces: use init_utsname when appropriate
Date: Sun, 09 Apr 2006 03:44:19 -0600 [thread overview]
Message-ID: <m164ljjd70.fsf@ebiederm.dsl.xmission.com> (raw)
In-Reply-To: <20060408202701.GA26403@sergelap.austin.ibm.com> (Serge E. Hallyn's message of "Sat, 8 Apr 2006 15:27:01 -0500")
"Serge E. Hallyn" <serue@us.ibm.com> writes:
>> This also probably makes sense as utsname(). It doesn't
>> really matter as this is before init is executed. But logically
>> this is a user space or per namespace action.
>
> Right, I was kind of favoring using init_utsname() for anything
> __init. But utsname() will of course work just as well there.
Basically anything that should move to klibc I favor using
utsname() for. That tends to make it clear it follows
the usual user space rules.
With a little luck HPA might actually have this code deleted
in -mm before we get to far.
>> > diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
>> > index aa8965e..97c8439 100644
>> > --- a/net/sunrpc/clnt.c
>> > +++ b/net/sunrpc/clnt.c
>> > @@ -176,10 +176,10 @@ rpc_new_client(struct rpc_xprt *xprt, ch
>> > }
>> >
>> > /* save the nodename */
>> > - clnt->cl_nodelen = strlen(system_utsname.nodename);
>> > + clnt->cl_nodelen = strlen(init_utsname()->nodename);
>> > if (clnt->cl_nodelen > UNX_MAXNODENAME)
>> > clnt->cl_nodelen = UNX_MAXNODENAME;
>> > - memcpy(clnt->cl_nodename, system_utsname.nodename, clnt->cl_nodelen);
>> > + memcpy(clnt->cl_nodename, init_utsname()->nodename, clnt->cl_nodelen);
>> > return clnt;
>> >
>> > out_no_auth:
>>
>> Using nodename is practically the definition of something
>> that should per namespace I think. Plus it would be really inconsistent
>> to use utsname() and the init_utsname for the nfs rpc calls.
>>
>> Unless I am missing something.
>
> It seemed like this would be happening in any old context, so that
> current->uts_ns could be any process'. Tracing it back further,
> it seems like nfs+lockd should have the context available. So I'll
> switch this as well.
I have not traced that path recently. So I don't remember.
This is one of those odd cases that makes a real difference.
This reminds me of another piece of the conversation.
kernel_thread vs. kthread, and the oddities of daemonize.
In general user space cannot kill kernel threads, so having
a kernel thread inside a namespace is dangerous because it
means the namespace can never exit.
There are two ways to avoid the associated problems.
- modify daemonize to always use the instance of that
namespace associated with init_task.
- modify all interesting kernel threads to use the
kthread api instead of kernel_thread. Using kthread
makes the kernel threads children of keventd and always
in the initial namespace instance. As such we know
we aren't inside of any user space namespace instance.
Eric
next prev parent reply other threads:[~2006-04-09 9:46 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20060407234815.849357768@sergelap>
[not found] ` <20060408045206.EAA8E19B8FF@sergelap.hallyn.com>
2006-04-08 7:09 ` [PATCH 3/7] uts namespaces: use init_utsname when appropriate Eric W. Biederman
2006-04-08 20:27 ` Serge E. Hallyn
2006-04-09 9:44 ` Eric W. Biederman [this message]
2006-04-09 10:14 ` Christoph Hellwig
2006-04-09 10:25 ` Christoph Hellwig
2006-04-09 10:36 ` Eric W. Biederman
2006-04-10 20:39 ` Serge E. Hallyn
2006-04-10 20:46 ` Serge E. Hallyn
2006-04-08 23:44 ` Sam Vilain
2006-04-09 0:12 ` [Devel] " Kir Kolyshkin
2006-04-09 9:25 ` Eric W. Biederman
2006-04-10 1:15 ` [PATCH 0/7] uts namespaces: Introduction Sam Vilain
[not found] ` <20060408045206.EFDD819B901@sergelap.hallyn.com>
2006-04-10 16:06 ` [Devel] [PATCH 4/7] uts namespaces: implement utsname namespaces Cedric Le Goater
2006-04-10 20:48 ` Serge E. Hallyn
2006-05-01 19:53 [PATCH 2/7] uts namespaces: switch to using uts namespaces Serge E. Hallyn
2006-05-01 19:53 ` [PATCH 3/7] uts namespaces: use init_utsname when appropriate Serge E. Hallyn
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=m164ljjd70.fsf@ebiederm.dsl.xmission.com \
--to=ebiederm@xmission.com \
--cc=dev@sw.ru \
--cc=devel@openvz.org \
--cc=herbert@13thfloor.at \
--cc=jmorris@namei.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sam@vilain.net \
--cc=serue@us.ibm.com \
--cc=xemul@sw.ru \
/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