All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleg Nesterov <oleg@redhat.com>
To: Greg Kurz <gkurz@fr.ibm.com>
Cc: akpm@linux-foundation.org, containers@lists.osdl.org,
	linux-kernel@vger.kernel.org, serge@hallyn.com,
	daniel.lezcano@free.fr, ebiederm@xmission.com, xemul@openvz.org
Subject: Re: [PATCH] Introduce ActivePid: in /proc/self/status (v2, was Vpid:)
Date: Thu, 16 Jun 2011 14:42:14 +0200	[thread overview]
Message-ID: <20110616124019.GA19312@redhat.com> (raw)
In-Reply-To: <1308222107.8230.49.camel@bahia.local>

On 06/16, Greg Kurz wrote:
>
> On Wed, 2011-06-15 at 20:46 +0200, Oleg Nesterov wrote:
> > On 06/15, Greg Kurz wrote:
> > >
> > > @@ -176,6 +177,17 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns,
> > >  		if (tracer)
> > >  			tpid = task_pid_nr_ns(tracer, ns);
> > >  	}
> > > +	actpid = 0;
> > > +	sighand = rcu_dereference(p->sighand);
> > > +	if (sighand) {
> > > +		struct pid_namespace *pid_ns;
> > > +		unsigned long flags;
> > > +		spin_lock_irqsave(&sighand->siglock, flags);
> >
> > Well. This is not exactly right. We have lock_task_sighand() for this.
> >
>
> I see... ->sighand could change so we need the for(;;) loop in
> __lock_task_sighand() to be sure we have the right pointer, correct ?

Yes,

> By the way, if we use lock_task_sighand() we'll end up with nested
> rcu_read_lock(): it will work but I don't know how it may affect
> performance...

You are kidding ;)

> > But. Why do you need ->siglock? Why rcu_read_lock() is not enough?
> >
>
> Because there's a race with
> __exit_signal()->__unhash_process()->detach_pid() that can break
> task_active_pid_ns()

Yes,

> and rcu won't help here

Why? free_pid() uses call_rcu() to do put_pid()

> (unless *perhaps* by
> modifying __exit_signal() but I don't want to mess with such a critical
> path).

I don't think so...

> > Hmm. You don't even need pid_ns afaics, you could simply look at
> > pid->numbers[pid->level].
> >
>
> True but I will have the same problem: detach_pid() nullifies the pid.

Can't understand. Of course pid can be NULL. So what? Say, ->sighand
can be NULL as well, they both "disappear" at the same time. This is
fine, we raced with exit, we should report pid=0.

Oleg.

  parent reply	other threads:[~2011-06-16 12:42 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-15 14:55 [PATCH] Introduce ActivePid: in /proc/self/status (v2, was Vpid:) Greg Kurz
2011-06-15 18:46 ` Oleg Nesterov
2011-06-15 19:08   ` Eric W. Biederman
2011-06-16 11:01   ` Greg Kurz
2011-06-16 12:35     ` Louis Rilling
2011-06-16 13:00       ` Greg Kurz
2011-06-16 13:18         ` Oleg Nesterov
2011-06-16 13:25         ` Louis Rilling
2011-06-16 14:51           ` Oleg Nesterov
2011-06-16 15:08             ` Louis Rilling
2011-06-16 15:01           ` Greg Kurz
2011-06-16 15:27             ` Louis Rilling
2011-06-16 12:42     ` Oleg Nesterov [this message]
2011-06-15 19:03 ` Oleg Nesterov
2011-06-16 11:19   ` Greg Kurz
2011-06-16 12:25     ` Cedric Le Goater
2011-06-16 13:06       ` Oleg Nesterov
2011-06-16 14:25         ` Cedric Le Goater
2011-06-16 15:22           ` Eric W. Biederman
2011-06-16 16:22             ` Oleg Nesterov
2011-06-16 15:07       ` Eric W. Biederman
2011-06-16 15:33         ` Greg Kurz
2011-06-16 16:12           ` Oleg Nesterov
2011-06-16 12:52     ` Oleg Nesterov
2011-06-16 17:54 ` Bryan Donlan
2011-06-20 11:45   ` Greg Kurz
2011-06-20 17:37     ` Bryan Donlan
2011-06-20 22:44       ` Eric W. Biederman
2011-06-22 15:29         ` Greg Kurz
2011-06-23  0:39           ` Eric W. Biederman
2011-06-23 13:43             ` Greg Kurz
2011-06-23 14:37               ` Serge Hallyn
2011-06-22 15:00       ` Greg Kurz
2011-06-22 16:56         ` Bryan Donlan

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=20110616124019.GA19312@redhat.com \
    --to=oleg@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=containers@lists.osdl.org \
    --cc=daniel.lezcano@free.fr \
    --cc=ebiederm@xmission.com \
    --cc=gkurz@fr.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=serge@hallyn.com \
    --cc=xemul@openvz.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 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.