• KOSAKI Motohiro's avatar
    oom: oom_kill doesn't kill vfork parent (or child) · 8c5cd6f3
    KOSAKI Motohiro authored
    Current oom_kill doesn't only kill the victim process, but also kill all
    thas shread the same mm.  it mean vfork parent will be killed.
    
    This is definitely incorrect.  another process have another oom_adj.  we
    shouldn't ignore their oom_adj (it might have OOM_DISABLE).
    
    following caller hit the minefield.
    
    ===============================
            switch (constraint) {
            case CONSTRAINT_MEMORY_POLICY:
                    oom_kill_process(current, gfp_mask, order, 0, NULL,
                                    "No available memory (MPOL_BIND)");
                    break;
    
    Note: force_sig(SIGKILL) send SIGKILL to all thread in the process.
    We don't need to care multi thread in here.
    Signed-off-by: default avatarKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: Paul Menage <menage@google.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    8c5cd6f3
oom_kill.c 16.4 KB