Skip to content
  • Masami Hiramatsu's avatar
    coredump: pass mm->flags as a coredump parameter for consistency · 30736a4d
    Masami Hiramatsu authored
    Pass mm->flags as a coredump parameter for consistency.
    
     ---
    1787         if (mm->core_state || !get_dumpable(mm)) {  <- (1)
    1788                 up_write(&mm->mmap_sem);
    1789                 put_cred(cred);
    1790                 goto fail;
    1791         }
    1792
    [...]
    1798         if (get_dumpable(mm) == 2) {    /* Setuid core dump mode */ <-(2)
    1799                 flag = O_EXCL;          /* Stop rewrite attacks */
    1800                 cred->fsuid = 0;        /* Dump root private */
    1801         }
     ---
    
    Since dumpable bits are not protected by lock, there is a chance to change
    these bits between (1) and (2).
    
    To solve this issue, this patch copies mm->flags to
    coredump_params.mm_flags at the beginning of do_coredump() and uses it
    instead of get_dumpable() while dumping core.
    
    This copy is also passed to binfmt->core_dump, since elf*_core_dump() uses
    dump_filter bits in mm->flags.
    
    [akpm@linux-foundation.org: fix merge]
    Signed-off-by: Masami H...
    30736a4d