lkml.org 
[lkml]   [2013]   [Sep]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 1/1] pidns: fix free_pid() to handle the first fork failure
    "case 0" in free_pid() assumes that disable_pid_allocation() should
    clear PIDNS_HASH_ADDING before the last pid goes away. However this
    doesn't happen if the 1st fork() fails to create the child reaper
    which should call disable_pid_allocation().

    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    ---
    kernel/pid.c | 5 +++++
    1 files changed, 5 insertions(+), 0 deletions(-)

    diff --git a/kernel/pid.c b/kernel/pid.c
    index 66505c1..606a212 100644
    --- a/kernel/pid.c
    +++ b/kernel/pid.c
    @@ -272,6 +272,11 @@ void free_pid(struct pid *pid)
    */
    wake_up_process(ns->child_reaper);
    break;
    + case PIDNS_HASH_ADDING:
    + /* Handle a fork failure of the first process */
    + WARN_ON(ns->child_reaper);
    + ns->nr_hashed = 0;
    + /* fall through */
    case 0:
    schedule_work(&ns->proc_work);
    break;
    --
    1.5.5.1



    \
     
     \ /
      Last update: 2013-09-10 16:21    [W:8.138 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site