All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleg Nesterov <oleg@redhat.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: "Kirill A. Shutemov" <kirill@shutemov.name>,
	Andrew Morton <akpm@linux-foundation.org>,
	Kees Cook <keescook@chromium.org>,
	David Howells <dhowells@redhat.com>,
	linux-kernel@vger.kernel.org,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@kernel.org>,
	"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
	Rik van Riel <riel@redhat.com>,
	Vladimir Davydov <vdavydov@parallels.com>,
	Ricky Zhou <rickyz@chromium.org>, Julien Tinnes <jln@google.com>
Subject: Re: [PATCH 1/2] unshare: Unsharing a thread does not require unsharing a vm
Date: Thu, 13 Aug 2015 18:17:18 +0200	[thread overview]
Message-ID: <20150813161718.GA23114@redhat.com> (raw)
In-Reply-To: <87vbcjyzac.fsf@x220.int.ebiederm.org>

On 08/13, Eric W. Biederman wrote:
>
> Oleg Nesterov <oleg@redhat.com> writes:
>
> > Let me first say that CLONE_SIGHAND must die, I think ;) and perhaps
> > even sighand_struct... I am wondering if we can add something like
> >
> > 	if ((clone_flags & (CLONE_THREAD | CLONE_SIGHAND)) == CLONE_SIGHAND)
> > 		pr_info("You are crazy, please report this to lkml\n");
> >
> > into copy_process().
>
> The only way killing CLONE_SIGHAND would be viable would be with a
> config option.  There are entire generations of linux where libpthreads
> used this before CLONE_THREAD was implemented.  Now perhaps no one cares
> anymore, but there are a lot of historic binairies that used it, even to
> the point where I know of at least one user outside of glibc's pthread
> implementation.

Heh. so we still need to keep it. Thanks.

> Yes.  A shared sighand_struct will have a shared ->mm.  But a private
> sighand_struct with count == 1 may also have a shared ->mm.

Yes sure. This just means that we can check current_is_single_threaded()
if CLONE_SIGHAND | CLONE_VM, signal->count check can be avoided.

> > Oh, I do not think we should check sighand->count. This can lead to
> > the same problem we have with the current current->mm->mm_users check.
> >
> > Most probably today nobody increments sighand->count (I didn't even
> > try to verify). But this is possible, and I saw the code which did
> > this to pin ->sighand...
>
> I have verified that copy_sighand is the only place in the kernel where
> we increment sighand->count today.

OK,

> de_thread in fs/exec.c even seems to
> rely on that.

Not really. This is just optimization, de_thread() could change ->sighand
unconditionally.

> So while I agree with you that the sighand->count could suffer a similar
> fate as mm_users it does not.

Ignoring the out-of-tree code ;)

Nevermind, I won't really argue, this all is mostly cosmetic. And perhaps
this sighand->count check in check_unshare_flags() makes this code look
a bit better / more understandable.

Still. How about the trivial *-fix.patch for -mm which simply does

	-	if (unshare_flags & (CLONE_SIGHAND | CLONE_VM)) {
	+	if (unshare_flags & CLONE_SIGHAND) {
			if (atomic_read(&current->sighand->count) > 1)
				return -EINVAL;
		}

again, this doesn't really matter. To this "| CLONE_VM" looks
very confusing to me.

Oleg.


  reply	other threads:[~2015-08-13 16:19 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-28 17:15 [PATCH] user_ns: use correct check for single-threadedness Kees Cook
2015-07-28 18:02 ` Rik van Riel
2015-07-28 18:17 ` Eric W. Biederman
2015-07-28 20:55   ` Ricky Zhou
2015-07-28 21:01     ` Kees Cook
2015-08-05 18:13       ` Eric W. Biederman
2015-08-05 19:40         ` Kees Cook
2015-07-28 21:35 ` Andrew Morton
2015-07-28 21:50   ` Kees Cook
2015-07-28 22:11   ` Kirill A. Shutemov
2015-08-05 11:38     ` Ingo Molnar
2015-08-05 11:53       ` Kirill A. Shutemov
2015-08-05 13:13         ` Ricky Zhou
2015-08-05 17:23     ` Oleg Nesterov
2015-08-05 18:00       ` Eric W. Biederman
2015-08-05 18:52         ` Eric W. Biederman
2015-08-06 13:06           ` Oleg Nesterov
2015-08-06 13:44             ` Oleg Nesterov
2015-08-12  1:17               ` Eric W. Biederman
2015-08-12 14:40                 ` Oleg Nesterov
2015-08-12 15:11                   ` Eric W. Biederman
2015-08-12  1:22               ` [PATCH 0/2] userns: Creation logic fixes Eric W. Biederman
2015-08-12  1:24                 ` [PATCH 1/2] unshare: Unsharing a thread does not require unsharing a vm Eric W. Biederman
2015-08-12 17:48                   ` Oleg Nesterov
2015-08-12 18:39                     ` Eric W. Biederman
2015-08-13 12:55                       ` Oleg Nesterov
2015-08-13 15:38                         ` Eric W. Biederman
2015-08-13 16:17                           ` Oleg Nesterov [this message]
2015-08-13 16:27                             ` Eric W. Biederman
2015-08-13 16:50                               ` Oleg Nesterov
2015-08-14 17:59                                 ` Oleg Nesterov
2015-08-12 19:59                     ` [PATCH v2] " Eric W. Biederman
2015-08-13 12:57                       ` Oleg Nesterov
2015-08-13 16:01                         ` Eric W. Biederman
2015-08-13 16:30                           ` Oleg Nesterov
2015-08-13 16:39                             ` Eric W. Biederman
2015-08-12  1:25                 ` [PATCH 2/2] userns,pidns: Force thread group sharing, not signal handler sharing Eric W. Biederman
2015-08-12 17:24                   ` Oleg Nesterov
2015-08-12  6:29                 ` [PATCH 0/2] userns: Creation logic fixes Kees Cook
2015-08-06 14:35           ` [PATCH] user_ns: use correct check for single-threadedness Oleg Nesterov
2015-08-06 21:16             ` Eric W. Biederman

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=20150813161718.GA23114@redhat.com \
    --to=oleg@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=dhowells@redhat.com \
    --cc=ebiederm@xmission.com \
    --cc=jln@google.com \
    --cc=keescook@chromium.org \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=kirill@shutemov.name \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rickyz@chromium.org \
    --cc=riel@redhat.com \
    --cc=vdavydov@parallels.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.