Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
[platform/kernel/linux-rpi.git] / fs / binfmt_elf_fdpic.c
index 05a1471..1c6c583 100644 (file)
@@ -743,12 +743,12 @@ static int elf_fdpic_map_file(struct elf_fdpic_params *params,
        struct elf32_fdpic_loadmap *loadmap;
 #ifdef CONFIG_MMU
        struct elf32_fdpic_loadseg *mseg;
+       unsigned long load_addr;
 #endif
        struct elf32_fdpic_loadseg *seg;
        struct elf32_phdr *phdr;
-       unsigned long load_addr, stop;
        unsigned nloads, tmp;
-       size_t size;
+       unsigned long stop;
        int loop, ret;
 
        /* allocate a load map table */
@@ -760,8 +760,7 @@ static int elf_fdpic_map_file(struct elf_fdpic_params *params,
        if (nloads == 0)
                return -ELIBBAD;
 
-       size = sizeof(*loadmap) + nloads * sizeof(*seg);
-       loadmap = kzalloc(size, GFP_KERNEL);
+       loadmap = kzalloc(struct_size(loadmap, segs, nloads), GFP_KERNEL);
        if (!loadmap)
                return -ENOMEM;
 
@@ -770,9 +769,6 @@ static int elf_fdpic_map_file(struct elf_fdpic_params *params,
        loadmap->version = ELF32_FDPIC_LOADMAP_VERSION;
        loadmap->nsegs = nloads;
 
-       load_addr = params->load_addr;
-       seg = loadmap->segs;
-
        /* map the requested LOADs into the memory space */
        switch (params->flags & ELF_FDPIC_FLAG_ARRANGEMENT) {
        case ELF_FDPIC_FLAG_CONSTDISP:
@@ -1269,7 +1265,7 @@ static inline void fill_elf_note_phdr(struct elf_phdr *phdr, int sz, loff_t offs
        phdr->p_filesz = sz;
        phdr->p_memsz = 0;
        phdr->p_flags = 0;
-       phdr->p_align = 0;
+       phdr->p_align = 4;
        return;
 }