• Oleg Nesterov's avatar
    coredump: ensure all coredumping tasks have SIGNAL_GROUP_COREDUMP · 5fa534c9
    Oleg Nesterov authored
    task_will_free_mem() is wrong in many ways, and in particular the
    SIGNAL_GROUP_COREDUMP check is not reliable: a task can participate in the
    coredumping without SIGNAL_GROUP_COREDUMP bit set.
    
    change zap_threads() paths to always set SIGNAL_GROUP_COREDUMP even if
    other CLONE_VM processes can't react to SIGKILL.  Fortunately, at least
    oom-kill case if fine; it kills all tasks sharing the same mm, so it
    should also kill the process which actually dumps the core.
    
    The change in prepare_signal() is not strictly necessary, it just ensures
    that the patch does not bring another subtle behavioural change.  But it
    reminds us that this SIGNAL_GROUP_EXIT/COREDUMP case needs more changes.
    Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Kyle Walker <kwalker@redhat.com>
    Acked-by: default avatarMichal Hocko <mhocko@suse.com>
    Cc: Stanislav Kozina <skozina@redhat.com>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    5fa534c9
signal.c 93.9 KB