lkml.org 
[lkml]   [2017]   [May]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.18 17/59] pid_ns: Sleep in TASK_INTERRUPTIBLE in zap_pid_ns_processes
    Date
    3.18-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Eric W. Biederman <ebiederm@xmission.com>

    commit b9a985db98961ae1ba0be169f19df1c567e4ffe0 upstream.

    The code can potentially sleep for an indefinite amount of time in
    zap_pid_ns_processes triggering the hung task timeout, and increasing
    the system average. This is undesirable. Sleep with a task state of
    TASK_INTERRUPTIBLE instead of TASK_UNINTERRUPTIBLE to remove these
    undesirable side effects.

    Apparently under heavy load this has been allowing Chrome to trigger
    the hung time task timeout error and cause ChromeOS to reboot.

    Reported-by: Vovo Yang <vovoy@google.com>
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Fixes: 6347e9009104 ("pidns: guarantee that the pidns init will be the last pidns process reaped")
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    kernel/pid_namespace.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/kernel/pid_namespace.c
    +++ b/kernel/pid_namespace.c
    @@ -234,7 +234,7 @@ void zap_pid_ns_processes(struct pid_nam
    * Make sure they all go away, see free_pid().
    */
    for (;;) {
    - set_current_state(TASK_UNINTERRUPTIBLE);
    + set_current_state(TASK_INTERRUPTIBLE);
    if (pid_ns->nr_hashed == init_pids)
    break;
    schedule();

    \
     
     \ /
      Last update: 2017-05-23 23:17    [W:3.506 / U:0.088 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site