mm, elf: handle vm_brk error
authorMichal Hocko <[email protected]>
Mon, 23 May 2016 23:25:39 +0000 (16:25 -0700)
committerLinus Torvalds <[email protected]>
Tue, 24 May 2016 00:04:14 +0000 (17:04 -0700)
load_elf_library doesn't handle vm_brk failure although nothing really
indicates it cannot do that because the function is allowed to fail due
to vm_mmap failures already.  This might be not a problem now but later
patch will make vm_brk killable (resp.  mmap_sem for write waiting will
become killable) and so the failure will be more probable.

Signed-off-by: Michal Hocko <[email protected]>
Acked-by: Vlastimil Babka <[email protected]>
Cc: Alexander Viro <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
fs/binfmt_elf.c

index 56224ffa94d2c62eed3d3d945158c723d4ddffc5..938fc4ede764b42c23b217c213ff29d09b22c501 100644 (file)
@@ -1176,8 +1176,11 @@ static int load_elf_library(struct file *file)
        len = ELF_PAGESTART(eppnt->p_filesz + eppnt->p_vaddr +
                            ELF_MIN_ALIGN - 1);
        bss = eppnt->p_memsz + eppnt->p_vaddr;
-       if (bss > len)
-               vm_brk(len, bss - len);
+       if (bss > len) {
+               error = vm_brk(len, bss - len);
+               if (BAD_ADDR(error))
+                       goto out_free_ph;
+       }
        error = 0;
 
 out_free_ph: