From: Roland McGrath <roland@redhat.com>
To: Oleg Nesterov <oleg@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
"Eric W. Biederman" <ebiederm@xmission.com>,
"Metzger, Markus T" <markus.t.metzger@intel.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/4] forget_original_parent: split out the un-ptrace part
Date: Tue, 24 Feb 2009 16:34:08 -0800 (PST) [thread overview]
Message-ID: <20090225003408.1DA81FC380@magilla.sf.frob.com> (raw)
In-Reply-To: Oleg Nesterov's message of Monday, 23 February 2009 17:46:32 +0100 <20090223164632.GA16294@redhat.com>
> But from the _pure theoretical_ pov, it is not correct to assume that
> list_empty(&tracer->ptraced) == T means that current can not be used
> somehow as tracee->parent. Another subthread can release a dead tracee.
I don't follow how that's relevant. If list_empty(), then it was empty or
is becoming empty. It can't then become nonempty again (because the thread
doing the check is the only one that adds to that list). That's all we're
assuming.
> For example, list_empty(&tracer->ptraced) == T doesn't mean that the
> STOREs to this task_struct are finished, list_del_init(->ptrace_entry)
> can still be in progress.
Sure, but so what? The check is to verify that some new list_del* (and
related cleanup work, of course) doesn't need to be *started*.
> > --- a/kernel/ptrace.c
> > +++ b/kernel/ptrace.c
> > @@ -534,7 +534,7 @@ repeat:
> > * Set the ptrace bit in the process ptrace flags.
> > * Then link us on our parent's ptraced list.
> > */
> > - if (!ret) {
> > + if (!ret && !(current->real_parent->flags & PF_EXITING)) {
> > current->ptrace |= PT_PTRACED;
>
> Yes sure.
>
> But this means exit_ptrace() must always take tasklist, otherwise we
> don't have the necessary barriers.
Really?
exit_signals(tsk); /* sets PF_EXITING */
/*
* tsk->flags are checked in the futex code to protect against
* an exiting task cleaning up the robust pi futexes.
*/
smp_mb();
This is an exactly analogous use, isn't it? So exit_ptrace() just has to
follow this same existing barrier. Right?
Thanks,
Roland
next prev parent reply other threads:[~2009-02-25 0:35 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-11 21:12 Oleg Nesterov
2009-02-20 2:27 ` Roland McGrath
2009-02-23 16:46 ` Oleg Nesterov
2009-02-23 18:26 ` Oleg Nesterov
2009-02-23 18:57 ` Oleg Nesterov
2009-02-25 0:34 ` Roland McGrath [this message]
2009-02-25 20:44 ` Oleg Nesterov
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=20090225003408.1DA81FC380@magilla.sf.frob.com \
--to=roland@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=ebiederm@xmission.com \
--cc=linux-kernel@vger.kernel.org \
--cc=markus.t.metzger@intel.com \
--cc=oleg@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®