lkml.org 
[lkml]   [2012]   [May]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 3/3] pidns: Make killed children autoreap
    On Sun, 06 May 2012 17:35:46 -0700
    ebiederm@xmission.com (Eric W. Biederman) wrote:

    >
    > Force SIGCHLD handling to SIG_IGN so that signals are not generated
    > and so that the children autoreap. This increases the parallelize
    > and in general the speed of network namespace shutdown.
    >
    > Note self reaping childrean can exist past zap_pid_ns_processess but
    > they will all be reaped before we allow the pid namespace init task
    > with pid == 1 to be reaped.
    >
    > Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    > ---
    > kernel/pid_namespace.c | 7 ++++++-
    > 1 files changed, 6 insertions(+), 1 deletions(-)
    >
    > diff --git a/kernel/pid_namespace.c b/kernel/pid_namespace.c
    > index 57bc1fd..b98b0ed 100644
    > --- a/kernel/pid_namespace.c
    > +++ b/kernel/pid_namespace.c
    > @@ -149,7 +149,12 @@ void zap_pid_ns_processes(struct pid_namespace *pid_ns)
    > {
    > int nr;
    > int rc;
    > - struct task_struct *task;
    > + struct task_struct *task, *me = current;
    > +
    > + /* Ignore SIGCHLD causing any terminated children to autoreap */
    > + spin_lock_irq(&me->sighand->siglock);
    > + me->sighand->action[SIGCHLD -1].sa.sa_handler = SIG_IGN;
    > + spin_unlock_irq(&me->sighand->siglock);

    Taking a lock around a single atomic write is always fishy. What
    exactly is this locking here for?



    \
     
     \ /
      Last update: 2012-05-09 01:21    [W:0.026 / U:0.596 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site