From: ebiederm@xmission.com (Eric W. Biederman)
To: Andy Lutomirski <luto@amacapital.net>
Cc: Oleg Nesterov <oleg@redhat.com>,
Brad Spengler <spender@grsecurity.net>,
Linus Torvalds <torvalds@linux-foundation.org>,
Colin Walters <walters@redhat.com>,
"linux-kernel\@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: PATCH? fix unshare(NEWPID) && vfork()
Date: Tue, 20 Aug 2013 13:25:16 -0700 [thread overview]
Message-ID: <87zjscxg7n.fsf@xmission.com> (raw)
In-Reply-To: <CALCETrUjohT2D=jtVQ9mnbeUr2oJ9VoN812PtQhaB2ZZ89isNA@mail.gmail.com> (Andy Lutomirski's message of "Tue, 20 Aug 2013 12:00:18 -0700")
Andy Lutomirski <luto@amacapital.net> writes:
> On Tue, Aug 20, 2013 at 11:50 AM, Oleg Nesterov <oleg@redhat.com> wrote:
>> On 08/20, Andy Lutomirski wrote:
>>>
>>> On Mon, Aug 19, 2013 at 11:43 AM, Oleg Nesterov <oleg@redhat.com> wrote:
>>> > On 08/19, Andy Lutomirski wrote:
>>> >>
>>> >> On Mon, Aug 19, 2013 at 11:33 AM, Oleg Nesterov <oleg@redhat.com> wrote:
>>> >> >
>>> >> > So do you think this change is fine or not (ignoring the fact it needs
>>> >> > cleanups) ?
>>> >>
>>> >> I think that removing the CLONE_VM check is fine (although there are
>>> >> some other ones that should probably be removed as well), but I'm not
>>> >> sure if that check needs replacing with something else.
>>> >
>>> > OK, thanks... but I still can't understand.
>>> >
>>> > The patch I sent is equivalent to the new one below. I just tried to
>>> > unify it with another check in do_fork().
>>>
>>> I was confused.
>>
>> Andy, I do not know how much you were confused, but I bet I am confused
>> much more ;)
>>
>>> Currently (with or without your patch), vfork() followed by
>>> unshare(CLONE_NEWUSER) or unshare(CLONE_NEWPID) will unshare the VM.
>>
>> Could you spell please?
>>
>> We never unshare the VM. CLONE_VM in sys_unshare() paths just means
>> "fail unless ->mm is not shared".
>>
>
> Argh. In that case this is probably buggy, and I am just as confused
> as you. This stuff is serious spaghetti code.
>
> sys_unshare will see CLONE_NEWPID or CLONE_NEWUSER and set
> CLONE_THREAD. Then it will see CLONE_THREAD and set CLONE_VM. Then
> check_unshare_flags will see CLONE_VM and fail if we just called
> vfork.
>
> Could this be made much more comprehensible by having a single list of
> shareable things are allowed to be shared across namespaces and
> enforcing the *same* list in clone and unshare?
Having a single function would be nice.
Unforutunately the logic is different (unshare attempts to silently add
the flags you need to make it work) and clone only unshares what you
tell it too.
Even more than that the meaning of half of the bits changes meaning
between unshare and clone.
For clone CLONE_VM means don't generate a new VM.
For unshare CLONE_VM means generate a new VM.
As for reorganizing shrug. It is always possible to make things better
but clone doesn't look too scary to me.
Eric
prev parent reply other threads:[~2013-08-20 20:25 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-19 17:25 PATCH? fix unshare(NEWPID) && vfork() Oleg Nesterov
2013-08-19 17:46 ` Linus Torvalds
2013-08-19 17:51 ` Oleg Nesterov
2013-08-19 18:10 ` Andy Lutomirski
2013-08-19 18:33 ` Oleg Nesterov
2013-08-19 18:40 ` Andy Lutomirski
2013-08-19 18:43 ` Oleg Nesterov
2013-08-20 17:55 ` Eric W. Biederman
2013-08-20 18:45 ` Oleg Nesterov
2013-08-20 20:52 ` Eric W. Biederman
2013-08-21 16:35 ` Oleg Nesterov
2013-08-22 16:47 ` Oleg Nesterov
2013-08-20 17:59 ` Andy Lutomirski
2013-08-20 18:50 ` Oleg Nesterov
2013-08-20 19:00 ` Andy Lutomirski
2013-08-20 19:05 ` Oleg Nesterov
2013-08-20 19:13 ` Andy Lutomirski
2013-08-20 19:23 ` Oleg Nesterov
2013-08-20 19:38 ` Andy Lutomirski
2013-08-21 12:24 ` Oleg Nesterov
2013-08-20 20:25 ` Eric W. Biederman [this message]
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=87zjscxg7n.fsf@xmission.com \
--to=ebiederm@xmission.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=oleg@redhat.com \
--cc=spender@grsecurity.net \
--cc=torvalds@linux-foundation.org \
--cc=walters@redhat.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.