Merge tag 'memblock-v6.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rppt...
[platform/kernel/linux-starfive.git] / fs / binfmt_elf.c
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * linux/fs/binfmt_elf.c
4  *
5  * These are the functions used to load ELF format executables as used
6  * on SVr4 machines.  Information on the format may be found in the book
7  * "UNIX SYSTEM V RELEASE 4 Programmers Guide: Ansi C and Programming Support
8  * Tools".
9  *
10  * Copyright 1993, 1994: Eric Youngdale (ericy@cais.com).
11  */
12
13 #include <linux/module.h>
14 #include <linux/kernel.h>
15 #include <linux/fs.h>
16 #include <linux/log2.h>
17 #include <linux/mm.h>
18 #include <linux/mman.h>
19 #include <linux/errno.h>
20 #include <linux/signal.h>
21 #include <linux/binfmts.h>
22 #include <linux/string.h>
23 #include <linux/file.h>
24 #include <linux/slab.h>
25 #include <linux/personality.h>
26 #include <linux/elfcore.h>
27 #include <linux/init.h>
28 #include <linux/highuid.h>
29 #include <linux/compiler.h>
30 #include <linux/highmem.h>
31 #include <linux/hugetlb.h>
32 #include <linux/pagemap.h>
33 #include <linux/vmalloc.h>
34 #include <linux/security.h>
35 #include <linux/random.h>
36 #include <linux/elf.h>
37 #include <linux/elf-randomize.h>
38 #include <linux/utsname.h>
39 #include <linux/coredump.h>
40 #include <linux/sched.h>
41 #include <linux/sched/coredump.h>
42 #include <linux/sched/task_stack.h>
43 #include <linux/sched/cputime.h>
44 #include <linux/sizes.h>
45 #include <linux/types.h>
46 #include <linux/cred.h>
47 #include <linux/dax.h>
48 #include <linux/uaccess.h>
49 #include <linux/rseq.h>
50 #include <asm/param.h>
51 #include <asm/page.h>
52
53 #ifndef ELF_COMPAT
54 #define ELF_COMPAT 0
55 #endif
56
57 #ifndef user_long_t
58 #define user_long_t long
59 #endif
60 #ifndef user_siginfo_t
61 #define user_siginfo_t siginfo_t
62 #endif
63
64 /* That's for binfmt_elf_fdpic to deal with */
65 #ifndef elf_check_fdpic
66 #define elf_check_fdpic(ex) false
67 #endif
68
69 static int load_elf_binary(struct linux_binprm *bprm);
70
71 #ifdef CONFIG_USELIB
72 static int load_elf_library(struct file *);
73 #else
74 #define load_elf_library NULL
75 #endif
76
77 /*
78  * If we don't support core dumping, then supply a NULL so we
79  * don't even try.
80  */
81 #ifdef CONFIG_ELF_CORE
82 static int elf_core_dump(struct coredump_params *cprm);
83 #else
84 #define elf_core_dump   NULL
85 #endif
86
87 #if ELF_EXEC_PAGESIZE > PAGE_SIZE
88 #define ELF_MIN_ALIGN   ELF_EXEC_PAGESIZE
89 #else
90 #define ELF_MIN_ALIGN   PAGE_SIZE
91 #endif
92
93 #ifndef ELF_CORE_EFLAGS
94 #define ELF_CORE_EFLAGS 0
95 #endif
96
97 #define ELF_PAGESTART(_v) ((_v) & ~(int)(ELF_MIN_ALIGN-1))
98 #define ELF_PAGEOFFSET(_v) ((_v) & (ELF_MIN_ALIGN-1))
99 #define ELF_PAGEALIGN(_v) (((_v) + ELF_MIN_ALIGN - 1) & ~(ELF_MIN_ALIGN - 1))
100
101 static struct linux_binfmt elf_format = {
102         .module         = THIS_MODULE,
103         .load_binary    = load_elf_binary,
104         .load_shlib     = load_elf_library,
105 #ifdef CONFIG_COREDUMP
106         .core_dump      = elf_core_dump,
107         .min_coredump   = ELF_EXEC_PAGESIZE,
108 #endif
109 };
110
111 #define BAD_ADDR(x) (unlikely((unsigned long)(x) >= TASK_SIZE))
112
113 static int set_brk(unsigned long start, unsigned long end, int prot)
114 {
115         start = ELF_PAGEALIGN(start);
116         end = ELF_PAGEALIGN(end);
117         if (end > start) {
118                 /*
119                  * Map the last of the bss segment.
120                  * If the header is requesting these pages to be
121                  * executable, honour that (ppc32 needs this).
122                  */
123                 int error = vm_brk_flags(start, end - start,
124                                 prot & PROT_EXEC ? VM_EXEC : 0);
125                 if (error)
126                         return error;
127         }
128         current->mm->start_brk = current->mm->brk = end;
129         return 0;
130 }
131
132 /* We need to explicitly zero any fractional pages
133    after the data section (i.e. bss).  This would
134    contain the junk from the file that should not
135    be in memory
136  */
137 static int padzero(unsigned long elf_bss)
138 {
139         unsigned long nbyte;
140
141         nbyte = ELF_PAGEOFFSET(elf_bss);
142         if (nbyte) {
143                 nbyte = ELF_MIN_ALIGN - nbyte;
144                 if (clear_user((void __user *) elf_bss, nbyte))
145                         return -EFAULT;
146         }
147         return 0;
148 }
149
150 /* Let's use some macros to make this stack manipulation a little clearer */
151 #ifdef CONFIG_STACK_GROWSUP
152 #define STACK_ADD(sp, items) ((elf_addr_t __user *)(sp) + (items))
153 #define STACK_ROUND(sp, items) \
154         ((15 + (unsigned long) ((sp) + (items))) &~ 15UL)
155 #define STACK_ALLOC(sp, len) ({ \
156         elf_addr_t __user *old_sp = (elf_addr_t __user *)sp; sp += len; \
157         old_sp; })
158 #else
159 #define STACK_ADD(sp, items) ((elf_addr_t __user *)(sp) - (items))
160 #define STACK_ROUND(sp, items) \
161         (((unsigned long) (sp - items)) &~ 15UL)
162 #define STACK_ALLOC(sp, len) (sp -= len)
163 #endif
164
165 #ifndef ELF_BASE_PLATFORM
166 /*
167  * AT_BASE_PLATFORM indicates the "real" hardware/microarchitecture.
168  * If the arch defines ELF_BASE_PLATFORM (in asm/elf.h), the value
169  * will be copied to the user stack in the same manner as AT_PLATFORM.
170  */
171 #define ELF_BASE_PLATFORM NULL
172 #endif
173
174 static int
175 create_elf_tables(struct linux_binprm *bprm, const struct elfhdr *exec,
176                 unsigned long interp_load_addr,
177                 unsigned long e_entry, unsigned long phdr_addr)
178 {
179         struct mm_struct *mm = current->mm;
180         unsigned long p = bprm->p;
181         int argc = bprm->argc;
182         int envc = bprm->envc;
183         elf_addr_t __user *sp;
184         elf_addr_t __user *u_platform;
185         elf_addr_t __user *u_base_platform;
186         elf_addr_t __user *u_rand_bytes;
187         const char *k_platform = ELF_PLATFORM;
188         const char *k_base_platform = ELF_BASE_PLATFORM;
189         unsigned char k_rand_bytes[16];
190         int items;
191         elf_addr_t *elf_info;
192         elf_addr_t flags = 0;
193         int ei_index;
194         const struct cred *cred = current_cred();
195         struct vm_area_struct *vma;
196
197         /*
198          * In some cases (e.g. Hyper-Threading), we want to avoid L1
199          * evictions by the processes running on the same package. One
200          * thing we can do is to shuffle the initial stack for them.
201          */
202
203         p = arch_align_stack(p);
204
205         /*
206          * If this architecture has a platform capability string, copy it
207          * to userspace.  In some cases (Sparc), this info is impossible
208          * for userspace to get any other way, in others (i386) it is
209          * merely difficult.
210          */
211         u_platform = NULL;
212         if (k_platform) {
213                 size_t len = strlen(k_platform) + 1;
214
215                 u_platform = (elf_addr_t __user *)STACK_ALLOC(p, len);
216                 if (copy_to_user(u_platform, k_platform, len))
217                         return -EFAULT;
218         }
219
220         /*
221          * If this architecture has a "base" platform capability
222          * string, copy it to userspace.
223          */
224         u_base_platform = NULL;
225         if (k_base_platform) {
226                 size_t len = strlen(k_base_platform) + 1;
227
228                 u_base_platform = (elf_addr_t __user *)STACK_ALLOC(p, len);
229                 if (copy_to_user(u_base_platform, k_base_platform, len))
230                         return -EFAULT;
231         }
232
233         /*
234          * Generate 16 random bytes for userspace PRNG seeding.
235          */
236         get_random_bytes(k_rand_bytes, sizeof(k_rand_bytes));
237         u_rand_bytes = (elf_addr_t __user *)
238                        STACK_ALLOC(p, sizeof(k_rand_bytes));
239         if (copy_to_user(u_rand_bytes, k_rand_bytes, sizeof(k_rand_bytes)))
240                 return -EFAULT;
241
242         /* Create the ELF interpreter info */
243         elf_info = (elf_addr_t *)mm->saved_auxv;
244         /* update AT_VECTOR_SIZE_BASE if the number of NEW_AUX_ENT() changes */
245 #define NEW_AUX_ENT(id, val) \
246         do { \
247                 *elf_info++ = id; \
248                 *elf_info++ = val; \
249         } while (0)
250
251 #ifdef ARCH_DLINFO
252         /*
253          * ARCH_DLINFO must come first so PPC can do its special alignment of
254          * AUXV.
255          * update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT() in
256          * ARCH_DLINFO changes
257          */
258         ARCH_DLINFO;
259 #endif
260         NEW_AUX_ENT(AT_HWCAP, ELF_HWCAP);
261         NEW_AUX_ENT(AT_PAGESZ, ELF_EXEC_PAGESIZE);
262         NEW_AUX_ENT(AT_CLKTCK, CLOCKS_PER_SEC);
263         NEW_AUX_ENT(AT_PHDR, phdr_addr);
264         NEW_AUX_ENT(AT_PHENT, sizeof(struct elf_phdr));
265         NEW_AUX_ENT(AT_PHNUM, exec->e_phnum);
266         NEW_AUX_ENT(AT_BASE, interp_load_addr);
267         if (bprm->interp_flags & BINPRM_FLAGS_PRESERVE_ARGV0)
268                 flags |= AT_FLAGS_PRESERVE_ARGV0;
269         NEW_AUX_ENT(AT_FLAGS, flags);
270         NEW_AUX_ENT(AT_ENTRY, e_entry);
271         NEW_AUX_ENT(AT_UID, from_kuid_munged(cred->user_ns, cred->uid));
272         NEW_AUX_ENT(AT_EUID, from_kuid_munged(cred->user_ns, cred->euid));
273         NEW_AUX_ENT(AT_GID, from_kgid_munged(cred->user_ns, cred->gid));
274         NEW_AUX_ENT(AT_EGID, from_kgid_munged(cred->user_ns, cred->egid));
275         NEW_AUX_ENT(AT_SECURE, bprm->secureexec);
276         NEW_AUX_ENT(AT_RANDOM, (elf_addr_t)(unsigned long)u_rand_bytes);
277 #ifdef ELF_HWCAP2
278         NEW_AUX_ENT(AT_HWCAP2, ELF_HWCAP2);
279 #endif
280         NEW_AUX_ENT(AT_EXECFN, bprm->exec);
281         if (k_platform) {
282                 NEW_AUX_ENT(AT_PLATFORM,
283                             (elf_addr_t)(unsigned long)u_platform);
284         }
285         if (k_base_platform) {
286                 NEW_AUX_ENT(AT_BASE_PLATFORM,
287                             (elf_addr_t)(unsigned long)u_base_platform);
288         }
289         if (bprm->have_execfd) {
290                 NEW_AUX_ENT(AT_EXECFD, bprm->execfd);
291         }
292 #ifdef CONFIG_RSEQ
293         NEW_AUX_ENT(AT_RSEQ_FEATURE_SIZE, offsetof(struct rseq, end));
294         NEW_AUX_ENT(AT_RSEQ_ALIGN, __alignof__(struct rseq));
295 #endif
296 #undef NEW_AUX_ENT
297         /* AT_NULL is zero; clear the rest too */
298         memset(elf_info, 0, (char *)mm->saved_auxv +
299                         sizeof(mm->saved_auxv) - (char *)elf_info);
300
301         /* And advance past the AT_NULL entry.  */
302         elf_info += 2;
303
304         ei_index = elf_info - (elf_addr_t *)mm->saved_auxv;
305         sp = STACK_ADD(p, ei_index);
306
307         items = (argc + 1) + (envc + 1) + 1;
308         bprm->p = STACK_ROUND(sp, items);
309
310         /* Point sp at the lowest address on the stack */
311 #ifdef CONFIG_STACK_GROWSUP
312         sp = (elf_addr_t __user *)bprm->p - items - ei_index;
313         bprm->exec = (unsigned long)sp; /* XXX: PARISC HACK */
314 #else
315         sp = (elf_addr_t __user *)bprm->p;
316 #endif
317
318
319         /*
320          * Grow the stack manually; some architectures have a limit on how
321          * far ahead a user-space access may be in order to grow the stack.
322          */
323         if (mmap_write_lock_killable(mm))
324                 return -EINTR;
325         vma = find_extend_vma_locked(mm, bprm->p);
326         mmap_write_unlock(mm);
327         if (!vma)
328                 return -EFAULT;
329
330         /* Now, let's put argc (and argv, envp if appropriate) on the stack */
331         if (put_user(argc, sp++))
332                 return -EFAULT;
333
334         /* Populate list of argv pointers back to argv strings. */
335         p = mm->arg_end = mm->arg_start;
336         while (argc-- > 0) {
337                 size_t len;
338                 if (put_user((elf_addr_t)p, sp++))
339                         return -EFAULT;
340                 len = strnlen_user((void __user *)p, MAX_ARG_STRLEN);
341                 if (!len || len > MAX_ARG_STRLEN)
342                         return -EINVAL;
343                 p += len;
344         }
345         if (put_user(0, sp++))
346                 return -EFAULT;
347         mm->arg_end = p;
348
349         /* Populate list of envp pointers back to envp strings. */
350         mm->env_end = mm->env_start = p;
351         while (envc-- > 0) {
352                 size_t len;
353                 if (put_user((elf_addr_t)p, sp++))
354                         return -EFAULT;
355                 len = strnlen_user((void __user *)p, MAX_ARG_STRLEN);
356                 if (!len || len > MAX_ARG_STRLEN)
357                         return -EINVAL;
358                 p += len;
359         }
360         if (put_user(0, sp++))
361                 return -EFAULT;
362         mm->env_end = p;
363
364         /* Put the elf_info on the stack in the right place.  */
365         if (copy_to_user(sp, mm->saved_auxv, ei_index * sizeof(elf_addr_t)))
366                 return -EFAULT;
367         return 0;
368 }
369
370 static unsigned long elf_map(struct file *filep, unsigned long addr,
371                 const struct elf_phdr *eppnt, int prot, int type,
372                 unsigned long total_size)
373 {
374         unsigned long map_addr;
375         unsigned long size = eppnt->p_filesz + ELF_PAGEOFFSET(eppnt->p_vaddr);
376         unsigned long off = eppnt->p_offset - ELF_PAGEOFFSET(eppnt->p_vaddr);
377         addr = ELF_PAGESTART(addr);
378         size = ELF_PAGEALIGN(size);
379
380         /* mmap() will return -EINVAL if given a zero size, but a
381          * segment with zero filesize is perfectly valid */
382         if (!size)
383                 return addr;
384
385         /*
386         * total_size is the size of the ELF (interpreter) image.
387         * The _first_ mmap needs to know the full size, otherwise
388         * randomization might put this image into an overlapping
389         * position with the ELF binary image. (since size < total_size)
390         * So we first map the 'big' image - and unmap the remainder at
391         * the end. (which unmap is needed for ELF images with holes.)
392         */
393         if (total_size) {
394                 total_size = ELF_PAGEALIGN(total_size);
395                 map_addr = vm_mmap(filep, addr, total_size, prot, type, off);
396                 if (!BAD_ADDR(map_addr))
397                         vm_munmap(map_addr+size, total_size-size);
398         } else
399                 map_addr = vm_mmap(filep, addr, size, prot, type, off);
400
401         if ((type & MAP_FIXED_NOREPLACE) &&
402             PTR_ERR((void *)map_addr) == -EEXIST)
403                 pr_info("%d (%s): Uhuuh, elf segment at %px requested but the memory is mapped already\n",
404                         task_pid_nr(current), current->comm, (void *)addr);
405
406         return(map_addr);
407 }
408
409 static unsigned long total_mapping_size(const struct elf_phdr *phdr, int nr)
410 {
411         elf_addr_t min_addr = -1;
412         elf_addr_t max_addr = 0;
413         bool pt_load = false;
414         int i;
415
416         for (i = 0; i < nr; i++) {
417                 if (phdr[i].p_type == PT_LOAD) {
418                         min_addr = min(min_addr, ELF_PAGESTART(phdr[i].p_vaddr));
419                         max_addr = max(max_addr, phdr[i].p_vaddr + phdr[i].p_memsz);
420                         pt_load = true;
421                 }
422         }
423         return pt_load ? (max_addr - min_addr) : 0;
424 }
425
426 static int elf_read(struct file *file, void *buf, size_t len, loff_t pos)
427 {
428         ssize_t rv;
429
430         rv = kernel_read(file, buf, len, &pos);
431         if (unlikely(rv != len)) {
432                 return (rv < 0) ? rv : -EIO;
433         }
434         return 0;
435 }
436
437 static unsigned long maximum_alignment(struct elf_phdr *cmds, int nr)
438 {
439         unsigned long alignment = 0;
440         int i;
441
442         for (i = 0; i < nr; i++) {
443                 if (cmds[i].p_type == PT_LOAD) {
444                         unsigned long p_align = cmds[i].p_align;
445
446                         /* skip non-power of two alignments as invalid */
447                         if (!is_power_of_2(p_align))
448                                 continue;
449                         alignment = max(alignment, p_align);
450                 }
451         }
452
453         /* ensure we align to at least one page */
454         return ELF_PAGEALIGN(alignment);
455 }
456
457 /**
458  * load_elf_phdrs() - load ELF program headers
459  * @elf_ex:   ELF header of the binary whose program headers should be loaded
460  * @elf_file: the opened ELF binary file
461  *
462  * Loads ELF program headers from the binary file elf_file, which has the ELF
463  * header pointed to by elf_ex, into a newly allocated array. The caller is
464  * responsible for freeing the allocated data. Returns NULL upon failure.
465  */
466 static struct elf_phdr *load_elf_phdrs(const struct elfhdr *elf_ex,
467                                        struct file *elf_file)
468 {
469         struct elf_phdr *elf_phdata = NULL;
470         int retval = -1;
471         unsigned int size;
472
473         /*
474          * If the size of this structure has changed, then punt, since
475          * we will be doing the wrong thing.
476          */
477         if (elf_ex->e_phentsize != sizeof(struct elf_phdr))
478                 goto out;
479
480         /* Sanity check the number of program headers... */
481         /* ...and their total size. */
482         size = sizeof(struct elf_phdr) * elf_ex->e_phnum;
483         if (size == 0 || size > 65536 || size > ELF_MIN_ALIGN)
484                 goto out;
485
486         elf_phdata = kmalloc(size, GFP_KERNEL);
487         if (!elf_phdata)
488                 goto out;
489
490         /* Read in the program headers */
491         retval = elf_read(elf_file, elf_phdata, size, elf_ex->e_phoff);
492
493 out:
494         if (retval) {
495                 kfree(elf_phdata);
496                 elf_phdata = NULL;
497         }
498         return elf_phdata;
499 }
500
501 #ifndef CONFIG_ARCH_BINFMT_ELF_STATE
502
503 /**
504  * struct arch_elf_state - arch-specific ELF loading state
505  *
506  * This structure is used to preserve architecture specific data during
507  * the loading of an ELF file, throughout the checking of architecture
508  * specific ELF headers & through to the point where the ELF load is
509  * known to be proceeding (ie. SET_PERSONALITY).
510  *
511  * This implementation is a dummy for architectures which require no
512  * specific state.
513  */
514 struct arch_elf_state {
515 };
516
517 #define INIT_ARCH_ELF_STATE {}
518
519 /**
520  * arch_elf_pt_proc() - check a PT_LOPROC..PT_HIPROC ELF program header
521  * @ehdr:       The main ELF header
522  * @phdr:       The program header to check
523  * @elf:        The open ELF file
524  * @is_interp:  True if the phdr is from the interpreter of the ELF being
525  *              loaded, else false.
526  * @state:      Architecture-specific state preserved throughout the process
527  *              of loading the ELF.
528  *
529  * Inspects the program header phdr to validate its correctness and/or
530  * suitability for the system. Called once per ELF program header in the
531  * range PT_LOPROC to PT_HIPROC, for both the ELF being loaded and its
532  * interpreter.
533  *
534  * Return: Zero to proceed with the ELF load, non-zero to fail the ELF load
535  *         with that return code.
536  */
537 static inline int arch_elf_pt_proc(struct elfhdr *ehdr,
538                                    struct elf_phdr *phdr,
539                                    struct file *elf, bool is_interp,
540                                    struct arch_elf_state *state)
541 {
542         /* Dummy implementation, always proceed */
543         return 0;
544 }
545
546 /**
547  * arch_check_elf() - check an ELF executable
548  * @ehdr:       The main ELF header
549  * @has_interp: True if the ELF has an interpreter, else false.
550  * @interp_ehdr: The interpreter's ELF header
551  * @state:      Architecture-specific state preserved throughout the process
552  *              of loading the ELF.
553  *
554  * Provides a final opportunity for architecture code to reject the loading
555  * of the ELF & cause an exec syscall to return an error. This is called after
556  * all program headers to be checked by arch_elf_pt_proc have been.
557  *
558  * Return: Zero to proceed with the ELF load, non-zero to fail the ELF load
559  *         with that return code.
560  */
561 static inline int arch_check_elf(struct elfhdr *ehdr, bool has_interp,
562                                  struct elfhdr *interp_ehdr,
563                                  struct arch_elf_state *state)
564 {
565         /* Dummy implementation, always proceed */
566         return 0;
567 }
568
569 #endif /* !CONFIG_ARCH_BINFMT_ELF_STATE */
570
571 static inline int make_prot(u32 p_flags, struct arch_elf_state *arch_state,
572                             bool has_interp, bool is_interp)
573 {
574         int prot = 0;
575
576         if (p_flags & PF_R)
577                 prot |= PROT_READ;
578         if (p_flags & PF_W)
579                 prot |= PROT_WRITE;
580         if (p_flags & PF_X)
581                 prot |= PROT_EXEC;
582
583         return arch_elf_adjust_prot(prot, arch_state, has_interp, is_interp);
584 }
585
586 /* This is much more generalized than the library routine read function,
587    so we keep this separate.  Technically the library read function
588    is only provided so that we can read a.out libraries that have
589    an ELF header */
590
591 static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex,
592                 struct file *interpreter,
593                 unsigned long no_base, struct elf_phdr *interp_elf_phdata,
594                 struct arch_elf_state *arch_state)
595 {
596         struct elf_phdr *eppnt;
597         unsigned long load_addr = 0;
598         int load_addr_set = 0;
599         unsigned long last_bss = 0, elf_bss = 0;
600         int bss_prot = 0;
601         unsigned long error = ~0UL;
602         unsigned long total_size;
603         int i;
604
605         /* First of all, some simple consistency checks */
606         if (interp_elf_ex->e_type != ET_EXEC &&
607             interp_elf_ex->e_type != ET_DYN)
608                 goto out;
609         if (!elf_check_arch(interp_elf_ex) ||
610             elf_check_fdpic(interp_elf_ex))
611                 goto out;
612         if (!interpreter->f_op->mmap)
613                 goto out;
614
615         total_size = total_mapping_size(interp_elf_phdata,
616                                         interp_elf_ex->e_phnum);
617         if (!total_size) {
618                 error = -EINVAL;
619                 goto out;
620         }
621
622         eppnt = interp_elf_phdata;
623         for (i = 0; i < interp_elf_ex->e_phnum; i++, eppnt++) {
624                 if (eppnt->p_type == PT_LOAD) {
625                         int elf_type = MAP_PRIVATE;
626                         int elf_prot = make_prot(eppnt->p_flags, arch_state,
627                                                  true, true);
628                         unsigned long vaddr = 0;
629                         unsigned long k, map_addr;
630
631                         vaddr = eppnt->p_vaddr;
632                         if (interp_elf_ex->e_type == ET_EXEC || load_addr_set)
633                                 elf_type |= MAP_FIXED;
634                         else if (no_base && interp_elf_ex->e_type == ET_DYN)
635                                 load_addr = -vaddr;
636
637                         map_addr = elf_map(interpreter, load_addr + vaddr,
638                                         eppnt, elf_prot, elf_type, total_size);
639                         total_size = 0;
640                         error = map_addr;
641                         if (BAD_ADDR(map_addr))
642                                 goto out;
643
644                         if (!load_addr_set &&
645                             interp_elf_ex->e_type == ET_DYN) {
646                                 load_addr = map_addr - ELF_PAGESTART(vaddr);
647                                 load_addr_set = 1;
648                         }
649
650                         /*
651                          * Check to see if the section's size will overflow the
652                          * allowed task size. Note that p_filesz must always be
653                          * <= p_memsize so it's only necessary to check p_memsz.
654                          */
655                         k = load_addr + eppnt->p_vaddr;
656                         if (BAD_ADDR(k) ||
657                             eppnt->p_filesz > eppnt->p_memsz ||
658                             eppnt->p_memsz > TASK_SIZE ||
659                             TASK_SIZE - eppnt->p_memsz < k) {
660                                 error = -ENOMEM;
661                                 goto out;
662                         }
663
664                         /*
665                          * Find the end of the file mapping for this phdr, and
666                          * keep track of the largest address we see for this.
667                          */
668                         k = load_addr + eppnt->p_vaddr + eppnt->p_filesz;
669                         if (k > elf_bss)
670                                 elf_bss = k;
671
672                         /*
673                          * Do the same thing for the memory mapping - between
674                          * elf_bss and last_bss is the bss section.
675                          */
676                         k = load_addr + eppnt->p_vaddr + eppnt->p_memsz;
677                         if (k > last_bss) {
678                                 last_bss = k;
679                                 bss_prot = elf_prot;
680                         }
681                 }
682         }
683
684         /*
685          * Now fill out the bss section: first pad the last page from
686          * the file up to the page boundary, and zero it from elf_bss
687          * up to the end of the page.
688          */
689         if (padzero(elf_bss)) {
690                 error = -EFAULT;
691                 goto out;
692         }
693         /*
694          * Next, align both the file and mem bss up to the page size,
695          * since this is where elf_bss was just zeroed up to, and where
696          * last_bss will end after the vm_brk_flags() below.
697          */
698         elf_bss = ELF_PAGEALIGN(elf_bss);
699         last_bss = ELF_PAGEALIGN(last_bss);
700         /* Finally, if there is still more bss to allocate, do it. */
701         if (last_bss > elf_bss) {
702                 error = vm_brk_flags(elf_bss, last_bss - elf_bss,
703                                 bss_prot & PROT_EXEC ? VM_EXEC : 0);
704                 if (error)
705                         goto out;
706         }
707
708         error = load_addr;
709 out:
710         return error;
711 }
712
713 /*
714  * These are the functions used to load ELF style executables and shared
715  * libraries.  There is no binary dependent code anywhere else.
716  */
717
718 static int parse_elf_property(const char *data, size_t *off, size_t datasz,
719                               struct arch_elf_state *arch,
720                               bool have_prev_type, u32 *prev_type)
721 {
722         size_t o, step;
723         const struct gnu_property *pr;
724         int ret;
725
726         if (*off == datasz)
727                 return -ENOENT;
728
729         if (WARN_ON_ONCE(*off > datasz || *off % ELF_GNU_PROPERTY_ALIGN))
730                 return -EIO;
731         o = *off;
732         datasz -= *off;
733
734         if (datasz < sizeof(*pr))
735                 return -ENOEXEC;
736         pr = (const struct gnu_property *)(data + o);
737         o += sizeof(*pr);
738         datasz -= sizeof(*pr);
739
740         if (pr->pr_datasz > datasz)
741                 return -ENOEXEC;
742
743         WARN_ON_ONCE(o % ELF_GNU_PROPERTY_ALIGN);
744         step = round_up(pr->pr_datasz, ELF_GNU_PROPERTY_ALIGN);
745         if (step > datasz)
746                 return -ENOEXEC;
747
748         /* Properties are supposed to be unique and sorted on pr_type: */
749         if (have_prev_type && pr->pr_type <= *prev_type)
750                 return -ENOEXEC;
751         *prev_type = pr->pr_type;
752
753         ret = arch_parse_elf_property(pr->pr_type, data + o,
754                                       pr->pr_datasz, ELF_COMPAT, arch);
755         if (ret)
756                 return ret;
757
758         *off = o + step;
759         return 0;
760 }
761
762 #define NOTE_DATA_SZ SZ_1K
763 #define GNU_PROPERTY_TYPE_0_NAME "GNU"
764 #define NOTE_NAME_SZ (sizeof(GNU_PROPERTY_TYPE_0_NAME))
765
766 static int parse_elf_properties(struct file *f, const struct elf_phdr *phdr,
767                                 struct arch_elf_state *arch)
768 {
769         union {
770                 struct elf_note nhdr;
771                 char data[NOTE_DATA_SZ];
772         } note;
773         loff_t pos;
774         ssize_t n;
775         size_t off, datasz;
776         int ret;
777         bool have_prev_type;
778         u32 prev_type;
779
780         if (!IS_ENABLED(CONFIG_ARCH_USE_GNU_PROPERTY) || !phdr)
781                 return 0;
782
783         /* load_elf_binary() shouldn't call us unless this is true... */
784         if (WARN_ON_ONCE(phdr->p_type != PT_GNU_PROPERTY))
785                 return -ENOEXEC;
786
787         /* If the properties are crazy large, that's too bad (for now): */
788         if (phdr->p_filesz > sizeof(note))
789                 return -ENOEXEC;
790
791         pos = phdr->p_offset;
792         n = kernel_read(f, &note, phdr->p_filesz, &pos);
793
794         BUILD_BUG_ON(sizeof(note) < sizeof(note.nhdr) + NOTE_NAME_SZ);
795         if (n < 0 || n < sizeof(note.nhdr) + NOTE_NAME_SZ)
796                 return -EIO;
797
798         if (note.nhdr.n_type != NT_GNU_PROPERTY_TYPE_0 ||
799             note.nhdr.n_namesz != NOTE_NAME_SZ ||
800             strncmp(note.data + sizeof(note.nhdr),
801                     GNU_PROPERTY_TYPE_0_NAME, n - sizeof(note.nhdr)))
802                 return -ENOEXEC;
803
804         off = round_up(sizeof(note.nhdr) + NOTE_NAME_SZ,
805                        ELF_GNU_PROPERTY_ALIGN);
806         if (off > n)
807                 return -ENOEXEC;
808
809         if (note.nhdr.n_descsz > n - off)
810                 return -ENOEXEC;
811         datasz = off + note.nhdr.n_descsz;
812
813         have_prev_type = false;
814         do {
815                 ret = parse_elf_property(note.data, &off, datasz, arch,
816                                          have_prev_type, &prev_type);
817                 have_prev_type = true;
818         } while (!ret);
819
820         return ret == -ENOENT ? 0 : ret;
821 }
822
823 static int load_elf_binary(struct linux_binprm *bprm)
824 {
825         struct file *interpreter = NULL; /* to shut gcc up */
826         unsigned long load_bias = 0, phdr_addr = 0;
827         int first_pt_load = 1;
828         unsigned long error;
829         struct elf_phdr *elf_ppnt, *elf_phdata, *interp_elf_phdata = NULL;
830         struct elf_phdr *elf_property_phdata = NULL;
831         unsigned long elf_bss, elf_brk;
832         int bss_prot = 0;
833         int retval, i;
834         unsigned long elf_entry;
835         unsigned long e_entry;
836         unsigned long interp_load_addr = 0;
837         unsigned long start_code, end_code, start_data, end_data;
838         unsigned long reloc_func_desc __maybe_unused = 0;
839         int executable_stack = EXSTACK_DEFAULT;
840         struct elfhdr *elf_ex = (struct elfhdr *)bprm->buf;
841         struct elfhdr *interp_elf_ex = NULL;
842         struct arch_elf_state arch_state = INIT_ARCH_ELF_STATE;
843         struct mm_struct *mm;
844         struct pt_regs *regs;
845
846         retval = -ENOEXEC;
847         /* First of all, some simple consistency checks */
848         if (memcmp(elf_ex->e_ident, ELFMAG, SELFMAG) != 0)
849                 goto out;
850
851         if (elf_ex->e_type != ET_EXEC && elf_ex->e_type != ET_DYN)
852                 goto out;
853         if (!elf_check_arch(elf_ex))
854                 goto out;
855         if (elf_check_fdpic(elf_ex))
856                 goto out;
857         if (!bprm->file->f_op->mmap)
858                 goto out;
859
860         elf_phdata = load_elf_phdrs(elf_ex, bprm->file);
861         if (!elf_phdata)
862                 goto out;
863
864         elf_ppnt = elf_phdata;
865         for (i = 0; i < elf_ex->e_phnum; i++, elf_ppnt++) {
866                 char *elf_interpreter;
867
868                 if (elf_ppnt->p_type == PT_GNU_PROPERTY) {
869                         elf_property_phdata = elf_ppnt;
870                         continue;
871                 }
872
873                 if (elf_ppnt->p_type != PT_INTERP)
874                         continue;
875
876                 /*
877                  * This is the program interpreter used for shared libraries -
878                  * for now assume that this is an a.out format binary.
879                  */
880                 retval = -ENOEXEC;
881                 if (elf_ppnt->p_filesz > PATH_MAX || elf_ppnt->p_filesz < 2)
882                         goto out_free_ph;
883
884                 retval = -ENOMEM;
885                 elf_interpreter = kmalloc(elf_ppnt->p_filesz, GFP_KERNEL);
886                 if (!elf_interpreter)
887                         goto out_free_ph;
888
889                 retval = elf_read(bprm->file, elf_interpreter, elf_ppnt->p_filesz,
890                                   elf_ppnt->p_offset);
891                 if (retval < 0)
892                         goto out_free_interp;
893                 /* make sure path is NULL terminated */
894                 retval = -ENOEXEC;
895                 if (elf_interpreter[elf_ppnt->p_filesz - 1] != '\0')
896                         goto out_free_interp;
897
898                 interpreter = open_exec(elf_interpreter);
899                 kfree(elf_interpreter);
900                 retval = PTR_ERR(interpreter);
901                 if (IS_ERR(interpreter))
902                         goto out_free_ph;
903
904                 /*
905                  * If the binary is not readable then enforce mm->dumpable = 0
906                  * regardless of the interpreter's permissions.
907                  */
908                 would_dump(bprm, interpreter);
909
910                 interp_elf_ex = kmalloc(sizeof(*interp_elf_ex), GFP_KERNEL);
911                 if (!interp_elf_ex) {
912                         retval = -ENOMEM;
913                         goto out_free_file;
914                 }
915
916                 /* Get the exec headers */
917                 retval = elf_read(interpreter, interp_elf_ex,
918                                   sizeof(*interp_elf_ex), 0);
919                 if (retval < 0)
920                         goto out_free_dentry;
921
922                 break;
923
924 out_free_interp:
925                 kfree(elf_interpreter);
926                 goto out_free_ph;
927         }
928
929         elf_ppnt = elf_phdata;
930         for (i = 0; i < elf_ex->e_phnum; i++, elf_ppnt++)
931                 switch (elf_ppnt->p_type) {
932                 case PT_GNU_STACK:
933                         if (elf_ppnt->p_flags & PF_X)
934                                 executable_stack = EXSTACK_ENABLE_X;
935                         else
936                                 executable_stack = EXSTACK_DISABLE_X;
937                         break;
938
939                 case PT_LOPROC ... PT_HIPROC:
940                         retval = arch_elf_pt_proc(elf_ex, elf_ppnt,
941                                                   bprm->file, false,
942                                                   &arch_state);
943                         if (retval)
944                                 goto out_free_dentry;
945                         break;
946                 }
947
948         /* Some simple consistency checks for the interpreter */
949         if (interpreter) {
950                 retval = -ELIBBAD;
951                 /* Not an ELF interpreter */
952                 if (memcmp(interp_elf_ex->e_ident, ELFMAG, SELFMAG) != 0)
953                         goto out_free_dentry;
954                 /* Verify the interpreter has a valid arch */
955                 if (!elf_check_arch(interp_elf_ex) ||
956                     elf_check_fdpic(interp_elf_ex))
957                         goto out_free_dentry;
958
959                 /* Load the interpreter program headers */
960                 interp_elf_phdata = load_elf_phdrs(interp_elf_ex,
961                                                    interpreter);
962                 if (!interp_elf_phdata)
963                         goto out_free_dentry;
964
965                 /* Pass PT_LOPROC..PT_HIPROC headers to arch code */
966                 elf_property_phdata = NULL;
967                 elf_ppnt = interp_elf_phdata;
968                 for (i = 0; i < interp_elf_ex->e_phnum; i++, elf_ppnt++)
969                         switch (elf_ppnt->p_type) {
970                         case PT_GNU_PROPERTY:
971                                 elf_property_phdata = elf_ppnt;
972                                 break;
973
974                         case PT_LOPROC ... PT_HIPROC:
975                                 retval = arch_elf_pt_proc(interp_elf_ex,
976                                                           elf_ppnt, interpreter,
977                                                           true, &arch_state);
978                                 if (retval)
979                                         goto out_free_dentry;
980                                 break;
981                         }
982         }
983
984         retval = parse_elf_properties(interpreter ?: bprm->file,
985                                       elf_property_phdata, &arch_state);
986         if (retval)
987                 goto out_free_dentry;
988
989         /*
990          * Allow arch code to reject the ELF at this point, whilst it's
991          * still possible to return an error to the code that invoked
992          * the exec syscall.
993          */
994         retval = arch_check_elf(elf_ex,
995                                 !!interpreter, interp_elf_ex,
996                                 &arch_state);
997         if (retval)
998                 goto out_free_dentry;
999
1000         /* Flush all traces of the currently running executable */
1001         retval = begin_new_exec(bprm);
1002         if (retval)
1003                 goto out_free_dentry;
1004
1005         /* Do this immediately, since STACK_TOP as used in setup_arg_pages
1006            may depend on the personality.  */
1007         SET_PERSONALITY2(*elf_ex, &arch_state);
1008         if (elf_read_implies_exec(*elf_ex, executable_stack))
1009                 current->personality |= READ_IMPLIES_EXEC;
1010
1011         if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
1012                 current->flags |= PF_RANDOMIZE;
1013
1014         setup_new_exec(bprm);
1015
1016         /* Do this so that we can load the interpreter, if need be.  We will
1017            change some of these later */
1018         retval = setup_arg_pages(bprm, randomize_stack_top(STACK_TOP),
1019                                  executable_stack);
1020         if (retval < 0)
1021                 goto out_free_dentry;
1022
1023         elf_bss = 0;
1024         elf_brk = 0;
1025
1026         start_code = ~0UL;
1027         end_code = 0;
1028         start_data = 0;
1029         end_data = 0;
1030
1031         /* Now we do a little grungy work by mmapping the ELF image into
1032            the correct location in memory. */
1033         for(i = 0, elf_ppnt = elf_phdata;
1034             i < elf_ex->e_phnum; i++, elf_ppnt++) {
1035                 int elf_prot, elf_flags;
1036                 unsigned long k, vaddr;
1037                 unsigned long total_size = 0;
1038                 unsigned long alignment;
1039
1040                 if (elf_ppnt->p_type != PT_LOAD)
1041                         continue;
1042
1043                 if (unlikely (elf_brk > elf_bss)) {
1044                         unsigned long nbyte;
1045
1046                         /* There was a PT_LOAD segment with p_memsz > p_filesz
1047                            before this one. Map anonymous pages, if needed,
1048                            and clear the area.  */
1049                         retval = set_brk(elf_bss + load_bias,
1050                                          elf_brk + load_bias,
1051                                          bss_prot);
1052                         if (retval)
1053                                 goto out_free_dentry;
1054                         nbyte = ELF_PAGEOFFSET(elf_bss);
1055                         if (nbyte) {
1056                                 nbyte = ELF_MIN_ALIGN - nbyte;
1057                                 if (nbyte > elf_brk - elf_bss)
1058                                         nbyte = elf_brk - elf_bss;
1059                                 if (clear_user((void __user *)elf_bss +
1060                                                         load_bias, nbyte)) {
1061                                         /*
1062                                          * This bss-zeroing can fail if the ELF
1063                                          * file specifies odd protections. So
1064                                          * we don't check the return value
1065                                          */
1066                                 }
1067                         }
1068                 }
1069
1070                 elf_prot = make_prot(elf_ppnt->p_flags, &arch_state,
1071                                      !!interpreter, false);
1072
1073                 elf_flags = MAP_PRIVATE;
1074
1075                 vaddr = elf_ppnt->p_vaddr;
1076                 /*
1077                  * The first time through the loop, first_pt_load is true:
1078                  * layout will be calculated. Once set, use MAP_FIXED since
1079                  * we know we've already safely mapped the entire region with
1080                  * MAP_FIXED_NOREPLACE in the once-per-binary logic following.
1081                  */
1082                 if (!first_pt_load) {
1083                         elf_flags |= MAP_FIXED;
1084                 } else if (elf_ex->e_type == ET_EXEC) {
1085                         /*
1086                          * This logic is run once for the first LOAD Program
1087                          * Header for ET_EXEC binaries. No special handling
1088                          * is needed.
1089                          */
1090                         elf_flags |= MAP_FIXED_NOREPLACE;
1091                 } else if (elf_ex->e_type == ET_DYN) {
1092                         /*
1093                          * This logic is run once for the first LOAD Program
1094                          * Header for ET_DYN binaries to calculate the
1095                          * randomization (load_bias) for all the LOAD
1096                          * Program Headers.
1097                          *
1098                          * There are effectively two types of ET_DYN
1099                          * binaries: programs (i.e. PIE: ET_DYN with INTERP)
1100                          * and loaders (ET_DYN without INTERP, since they
1101                          * _are_ the ELF interpreter). The loaders must
1102                          * be loaded away from programs since the program
1103                          * may otherwise collide with the loader (especially
1104                          * for ET_EXEC which does not have a randomized
1105                          * position). For example to handle invocations of
1106                          * "./ld.so someprog" to test out a new version of
1107                          * the loader, the subsequent program that the
1108                          * loader loads must avoid the loader itself, so
1109                          * they cannot share the same load range. Sufficient
1110                          * room for the brk must be allocated with the
1111                          * loader as well, since brk must be available with
1112                          * the loader.
1113                          *
1114                          * Therefore, programs are loaded offset from
1115                          * ELF_ET_DYN_BASE and loaders are loaded into the
1116                          * independently randomized mmap region (0 load_bias
1117                          * without MAP_FIXED nor MAP_FIXED_NOREPLACE).
1118                          */
1119                         if (interpreter) {
1120                                 load_bias = ELF_ET_DYN_BASE;
1121                                 if (current->flags & PF_RANDOMIZE)
1122                                         load_bias += arch_mmap_rnd();
1123                                 alignment = maximum_alignment(elf_phdata, elf_ex->e_phnum);
1124                                 if (alignment)
1125                                         load_bias &= ~(alignment - 1);
1126                                 elf_flags |= MAP_FIXED_NOREPLACE;
1127                         } else
1128                                 load_bias = 0;
1129
1130                         /*
1131                          * Since load_bias is used for all subsequent loading
1132                          * calculations, we must lower it by the first vaddr
1133                          * so that the remaining calculations based on the
1134                          * ELF vaddrs will be correctly offset. The result
1135                          * is then page aligned.
1136                          */
1137                         load_bias = ELF_PAGESTART(load_bias - vaddr);
1138
1139                         /*
1140                          * Calculate the entire size of the ELF mapping
1141                          * (total_size), used for the initial mapping,
1142                          * due to load_addr_set which is set to true later
1143                          * once the initial mapping is performed.
1144                          *
1145                          * Note that this is only sensible when the LOAD
1146                          * segments are contiguous (or overlapping). If
1147                          * used for LOADs that are far apart, this would
1148                          * cause the holes between LOADs to be mapped,
1149                          * running the risk of having the mapping fail,
1150                          * as it would be larger than the ELF file itself.
1151                          *
1152                          * As a result, only ET_DYN does this, since
1153                          * some ET_EXEC (e.g. ia64) may have large virtual
1154                          * memory holes between LOADs.
1155                          *
1156                          */
1157                         total_size = total_mapping_size(elf_phdata,
1158                                                         elf_ex->e_phnum);
1159                         if (!total_size) {
1160                                 retval = -EINVAL;
1161                                 goto out_free_dentry;
1162                         }
1163                 }
1164
1165                 error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt,
1166                                 elf_prot, elf_flags, total_size);
1167                 if (BAD_ADDR(error)) {
1168                         retval = IS_ERR_VALUE(error) ?
1169                                 PTR_ERR((void*)error) : -EINVAL;
1170                         goto out_free_dentry;
1171                 }
1172
1173                 if (first_pt_load) {
1174                         first_pt_load = 0;
1175                         if (elf_ex->e_type == ET_DYN) {
1176                                 load_bias += error -
1177                                              ELF_PAGESTART(load_bias + vaddr);
1178                                 reloc_func_desc = load_bias;
1179                         }
1180                 }
1181
1182                 /*
1183                  * Figure out which segment in the file contains the Program
1184                  * Header table, and map to the associated memory address.
1185                  */
1186                 if (elf_ppnt->p_offset <= elf_ex->e_phoff &&
1187                     elf_ex->e_phoff < elf_ppnt->p_offset + elf_ppnt->p_filesz) {
1188                         phdr_addr = elf_ex->e_phoff - elf_ppnt->p_offset +
1189                                     elf_ppnt->p_vaddr;
1190                 }
1191
1192                 k = elf_ppnt->p_vaddr;
1193                 if ((elf_ppnt->p_flags & PF_X) && k < start_code)
1194                         start_code = k;
1195                 if (start_data < k)
1196                         start_data = k;
1197
1198                 /*
1199                  * Check to see if the section's size will overflow the
1200                  * allowed task size. Note that p_filesz must always be
1201                  * <= p_memsz so it is only necessary to check p_memsz.
1202                  */
1203                 if (BAD_ADDR(k) || elf_ppnt->p_filesz > elf_ppnt->p_memsz ||
1204                     elf_ppnt->p_memsz > TASK_SIZE ||
1205                     TASK_SIZE - elf_ppnt->p_memsz < k) {
1206                         /* set_brk can never work. Avoid overflows. */
1207                         retval = -EINVAL;
1208                         goto out_free_dentry;
1209                 }
1210
1211                 k = elf_ppnt->p_vaddr + elf_ppnt->p_filesz;
1212
1213                 if (k > elf_bss)
1214                         elf_bss = k;
1215                 if ((elf_ppnt->p_flags & PF_X) && end_code < k)
1216                         end_code = k;
1217                 if (end_data < k)
1218                         end_data = k;
1219                 k = elf_ppnt->p_vaddr + elf_ppnt->p_memsz;
1220                 if (k > elf_brk) {
1221                         bss_prot = elf_prot;
1222                         elf_brk = k;
1223                 }
1224         }
1225
1226         e_entry = elf_ex->e_entry + load_bias;
1227         phdr_addr += load_bias;
1228         elf_bss += load_bias;
1229         elf_brk += load_bias;
1230         start_code += load_bias;
1231         end_code += load_bias;
1232         start_data += load_bias;
1233         end_data += load_bias;
1234
1235         /* Calling set_brk effectively mmaps the pages that we need
1236          * for the bss and break sections.  We must do this before
1237          * mapping in the interpreter, to make sure it doesn't wind
1238          * up getting placed where the bss needs to go.
1239          */
1240         retval = set_brk(elf_bss, elf_brk, bss_prot);
1241         if (retval)
1242                 goto out_free_dentry;
1243         if (likely(elf_bss != elf_brk) && unlikely(padzero(elf_bss))) {
1244                 retval = -EFAULT; /* Nobody gets to see this, but.. */
1245                 goto out_free_dentry;
1246         }
1247
1248         if (interpreter) {
1249                 elf_entry = load_elf_interp(interp_elf_ex,
1250                                             interpreter,
1251                                             load_bias, interp_elf_phdata,
1252                                             &arch_state);
1253                 if (!IS_ERR_VALUE(elf_entry)) {
1254                         /*
1255                          * load_elf_interp() returns relocation
1256                          * adjustment
1257                          */
1258                         interp_load_addr = elf_entry;
1259                         elf_entry += interp_elf_ex->e_entry;
1260                 }
1261                 if (BAD_ADDR(elf_entry)) {
1262                         retval = IS_ERR_VALUE(elf_entry) ?
1263                                         (int)elf_entry : -EINVAL;
1264                         goto out_free_dentry;
1265                 }
1266                 reloc_func_desc = interp_load_addr;
1267
1268                 allow_write_access(interpreter);
1269                 fput(interpreter);
1270
1271                 kfree(interp_elf_ex);
1272                 kfree(interp_elf_phdata);
1273         } else {
1274                 elf_entry = e_entry;
1275                 if (BAD_ADDR(elf_entry)) {
1276                         retval = -EINVAL;
1277                         goto out_free_dentry;
1278                 }
1279         }
1280
1281         kfree(elf_phdata);
1282
1283         set_binfmt(&elf_format);
1284
1285 #ifdef ARCH_HAS_SETUP_ADDITIONAL_PAGES
1286         retval = ARCH_SETUP_ADDITIONAL_PAGES(bprm, elf_ex, !!interpreter);
1287         if (retval < 0)
1288                 goto out;
1289 #endif /* ARCH_HAS_SETUP_ADDITIONAL_PAGES */
1290
1291         retval = create_elf_tables(bprm, elf_ex, interp_load_addr,
1292                                    e_entry, phdr_addr);
1293         if (retval < 0)
1294                 goto out;
1295
1296         mm = current->mm;
1297         mm->end_code = end_code;
1298         mm->start_code = start_code;
1299         mm->start_data = start_data;
1300         mm->end_data = end_data;
1301         mm->start_stack = bprm->p;
1302
1303         if ((current->flags & PF_RANDOMIZE) && (randomize_va_space > 1)) {
1304                 /*
1305                  * For architectures with ELF randomization, when executing
1306                  * a loader directly (i.e. no interpreter listed in ELF
1307                  * headers), move the brk area out of the mmap region
1308                  * (since it grows up, and may collide early with the stack
1309                  * growing down), and into the unused ELF_ET_DYN_BASE region.
1310                  */
1311                 if (IS_ENABLED(CONFIG_ARCH_HAS_ELF_RANDOMIZE) &&
1312                     elf_ex->e_type == ET_DYN && !interpreter) {
1313                         mm->brk = mm->start_brk = ELF_ET_DYN_BASE;
1314                 }
1315
1316                 mm->brk = mm->start_brk = arch_randomize_brk(mm);
1317 #ifdef compat_brk_randomized
1318                 current->brk_randomized = 1;
1319 #endif
1320         }
1321
1322         if (current->personality & MMAP_PAGE_ZERO) {
1323                 /* Why this, you ask???  Well SVr4 maps page 0 as read-only,
1324                    and some applications "depend" upon this behavior.
1325                    Since we do not have the power to recompile these, we
1326                    emulate the SVr4 behavior. Sigh. */
1327                 error = vm_mmap(NULL, 0, PAGE_SIZE, PROT_READ | PROT_EXEC,
1328                                 MAP_FIXED | MAP_PRIVATE, 0);
1329         }
1330
1331         regs = current_pt_regs();
1332 #ifdef ELF_PLAT_INIT
1333         /*
1334          * The ABI may specify that certain registers be set up in special
1335          * ways (on i386 %edx is the address of a DT_FINI function, for
1336          * example.  In addition, it may also specify (eg, PowerPC64 ELF)
1337          * that the e_entry field is the address of the function descriptor
1338          * for the startup routine, rather than the address of the startup
1339          * routine itself.  This macro performs whatever initialization to
1340          * the regs structure is required as well as any relocations to the
1341          * function descriptor entries when executing dynamically links apps.
1342          */
1343         ELF_PLAT_INIT(regs, reloc_func_desc);
1344 #endif
1345
1346         finalize_exec(bprm);
1347         START_THREAD(elf_ex, regs, elf_entry, bprm->p);
1348         retval = 0;
1349 out:
1350         return retval;
1351
1352         /* error cleanup */
1353 out_free_dentry:
1354         kfree(interp_elf_ex);
1355         kfree(interp_elf_phdata);
1356 out_free_file:
1357         allow_write_access(interpreter);
1358         if (interpreter)
1359                 fput(interpreter);
1360 out_free_ph:
1361         kfree(elf_phdata);
1362         goto out;
1363 }
1364
1365 #ifdef CONFIG_USELIB
1366 /* This is really simpleminded and specialized - we are loading an
1367    a.out library that is given an ELF header. */
1368 static int load_elf_library(struct file *file)
1369 {
1370         struct elf_phdr *elf_phdata;
1371         struct elf_phdr *eppnt;
1372         unsigned long elf_bss, bss, len;
1373         int retval, error, i, j;
1374         struct elfhdr elf_ex;
1375
1376         error = -ENOEXEC;
1377         retval = elf_read(file, &elf_ex, sizeof(elf_ex), 0);
1378         if (retval < 0)
1379                 goto out;
1380
1381         if (memcmp(elf_ex.e_ident, ELFMAG, SELFMAG) != 0)
1382                 goto out;
1383
1384         /* First of all, some simple consistency checks */
1385         if (elf_ex.e_type != ET_EXEC || elf_ex.e_phnum > 2 ||
1386             !elf_check_arch(&elf_ex) || !file->f_op->mmap)
1387                 goto out;
1388         if (elf_check_fdpic(&elf_ex))
1389                 goto out;
1390
1391         /* Now read in all of the header information */
1392
1393         j = sizeof(struct elf_phdr) * elf_ex.e_phnum;
1394         /* j < ELF_MIN_ALIGN because elf_ex.e_phnum <= 2 */
1395
1396         error = -ENOMEM;
1397         elf_phdata = kmalloc(j, GFP_KERNEL);
1398         if (!elf_phdata)
1399                 goto out;
1400
1401         eppnt = elf_phdata;
1402         error = -ENOEXEC;
1403         retval = elf_read(file, eppnt, j, elf_ex.e_phoff);
1404         if (retval < 0)
1405                 goto out_free_ph;
1406
1407         for (j = 0, i = 0; i<elf_ex.e_phnum; i++)
1408                 if ((eppnt + i)->p_type == PT_LOAD)
1409                         j++;
1410         if (j != 1)
1411                 goto out_free_ph;
1412
1413         while (eppnt->p_type != PT_LOAD)
1414                 eppnt++;
1415
1416         /* Now use mmap to map the library into memory. */
1417         error = vm_mmap(file,
1418                         ELF_PAGESTART(eppnt->p_vaddr),
1419                         (eppnt->p_filesz +
1420                          ELF_PAGEOFFSET(eppnt->p_vaddr)),
1421                         PROT_READ | PROT_WRITE | PROT_EXEC,
1422                         MAP_FIXED_NOREPLACE | MAP_PRIVATE,
1423                         (eppnt->p_offset -
1424                          ELF_PAGEOFFSET(eppnt->p_vaddr)));
1425         if (error != ELF_PAGESTART(eppnt->p_vaddr))
1426                 goto out_free_ph;
1427
1428         elf_bss = eppnt->p_vaddr + eppnt->p_filesz;
1429         if (padzero(elf_bss)) {
1430                 error = -EFAULT;
1431                 goto out_free_ph;
1432         }
1433
1434         len = ELF_PAGEALIGN(eppnt->p_filesz + eppnt->p_vaddr);
1435         bss = ELF_PAGEALIGN(eppnt->p_memsz + eppnt->p_vaddr);
1436         if (bss > len) {
1437                 error = vm_brk(len, bss - len);
1438                 if (error)
1439                         goto out_free_ph;
1440         }
1441         error = 0;
1442
1443 out_free_ph:
1444         kfree(elf_phdata);
1445 out:
1446         return error;
1447 }
1448 #endif /* #ifdef CONFIG_USELIB */
1449
1450 #ifdef CONFIG_ELF_CORE
1451 /*
1452  * ELF core dumper
1453  *
1454  * Modelled on fs/exec.c:aout_core_dump()
1455  * Jeremy Fitzhardinge <jeremy@sw.oz.au>
1456  */
1457
1458 /* An ELF note in memory */
1459 struct memelfnote
1460 {
1461         const char *name;
1462         int type;
1463         unsigned int datasz;
1464         void *data;
1465 };
1466
1467 static int notesize(struct memelfnote *en)
1468 {
1469         int sz;
1470
1471         sz = sizeof(struct elf_note);
1472         sz += roundup(strlen(en->name) + 1, 4);
1473         sz += roundup(en->datasz, 4);
1474
1475         return sz;
1476 }
1477
1478 static int writenote(struct memelfnote *men, struct coredump_params *cprm)
1479 {
1480         struct elf_note en;
1481         en.n_namesz = strlen(men->name) + 1;
1482         en.n_descsz = men->datasz;
1483         en.n_type = men->type;
1484
1485         return dump_emit(cprm, &en, sizeof(en)) &&
1486             dump_emit(cprm, men->name, en.n_namesz) && dump_align(cprm, 4) &&
1487             dump_emit(cprm, men->data, men->datasz) && dump_align(cprm, 4);
1488 }
1489
1490 static void fill_elf_header(struct elfhdr *elf, int segs,
1491                             u16 machine, u32 flags)
1492 {
1493         memset(elf, 0, sizeof(*elf));
1494
1495         memcpy(elf->e_ident, ELFMAG, SELFMAG);
1496         elf->e_ident[EI_CLASS] = ELF_CLASS;
1497         elf->e_ident[EI_DATA] = ELF_DATA;
1498         elf->e_ident[EI_VERSION] = EV_CURRENT;
1499         elf->e_ident[EI_OSABI] = ELF_OSABI;
1500
1501         elf->e_type = ET_CORE;
1502         elf->e_machine = machine;
1503         elf->e_version = EV_CURRENT;
1504         elf->e_phoff = sizeof(struct elfhdr);
1505         elf->e_flags = flags;
1506         elf->e_ehsize = sizeof(struct elfhdr);
1507         elf->e_phentsize = sizeof(struct elf_phdr);
1508         elf->e_phnum = segs;
1509 }
1510
1511 static void fill_elf_note_phdr(struct elf_phdr *phdr, int sz, loff_t offset)
1512 {
1513         phdr->p_type = PT_NOTE;
1514         phdr->p_offset = offset;
1515         phdr->p_vaddr = 0;
1516         phdr->p_paddr = 0;
1517         phdr->p_filesz = sz;
1518         phdr->p_memsz = 0;
1519         phdr->p_flags = 0;
1520         phdr->p_align = 4;
1521 }
1522
1523 static void fill_note(struct memelfnote *note, const char *name, int type,
1524                 unsigned int sz, void *data)
1525 {
1526         note->name = name;
1527         note->type = type;
1528         note->datasz = sz;
1529         note->data = data;
1530 }
1531
1532 /*
1533  * fill up all the fields in prstatus from the given task struct, except
1534  * registers which need to be filled up separately.
1535  */
1536 static void fill_prstatus(struct elf_prstatus_common *prstatus,
1537                 struct task_struct *p, long signr)
1538 {
1539         prstatus->pr_info.si_signo = prstatus->pr_cursig = signr;
1540         prstatus->pr_sigpend = p->pending.signal.sig[0];
1541         prstatus->pr_sighold = p->blocked.sig[0];
1542         rcu_read_lock();
1543         prstatus->pr_ppid = task_pid_vnr(rcu_dereference(p->real_parent));
1544         rcu_read_unlock();
1545         prstatus->pr_pid = task_pid_vnr(p);
1546         prstatus->pr_pgrp = task_pgrp_vnr(p);
1547         prstatus->pr_sid = task_session_vnr(p);
1548         if (thread_group_leader(p)) {
1549                 struct task_cputime cputime;
1550
1551                 /*
1552                  * This is the record for the group leader.  It shows the
1553                  * group-wide total, not its individual thread total.
1554                  */
1555                 thread_group_cputime(p, &cputime);
1556                 prstatus->pr_utime = ns_to_kernel_old_timeval(cputime.utime);
1557                 prstatus->pr_stime = ns_to_kernel_old_timeval(cputime.stime);
1558         } else {
1559                 u64 utime, stime;
1560
1561                 task_cputime(p, &utime, &stime);
1562                 prstatus->pr_utime = ns_to_kernel_old_timeval(utime);
1563                 prstatus->pr_stime = ns_to_kernel_old_timeval(stime);
1564         }
1565
1566         prstatus->pr_cutime = ns_to_kernel_old_timeval(p->signal->cutime);
1567         prstatus->pr_cstime = ns_to_kernel_old_timeval(p->signal->cstime);
1568 }
1569
1570 static int fill_psinfo(struct elf_prpsinfo *psinfo, struct task_struct *p,
1571                        struct mm_struct *mm)
1572 {
1573         const struct cred *cred;
1574         unsigned int i, len;
1575         unsigned int state;
1576
1577         /* first copy the parameters from user space */
1578         memset(psinfo, 0, sizeof(struct elf_prpsinfo));
1579
1580         len = mm->arg_end - mm->arg_start;
1581         if (len >= ELF_PRARGSZ)
1582                 len = ELF_PRARGSZ-1;
1583         if (copy_from_user(&psinfo->pr_psargs,
1584                            (const char __user *)mm->arg_start, len))
1585                 return -EFAULT;
1586         for(i = 0; i < len; i++)
1587                 if (psinfo->pr_psargs[i] == 0)
1588                         psinfo->pr_psargs[i] = ' ';
1589         psinfo->pr_psargs[len] = 0;
1590
1591         rcu_read_lock();
1592         psinfo->pr_ppid = task_pid_vnr(rcu_dereference(p->real_parent));
1593         rcu_read_unlock();
1594         psinfo->pr_pid = task_pid_vnr(p);
1595         psinfo->pr_pgrp = task_pgrp_vnr(p);
1596         psinfo->pr_sid = task_session_vnr(p);
1597
1598         state = READ_ONCE(p->__state);
1599         i = state ? ffz(~state) + 1 : 0;
1600         psinfo->pr_state = i;
1601         psinfo->pr_sname = (i > 5) ? '.' : "RSDTZW"[i];
1602         psinfo->pr_zomb = psinfo->pr_sname == 'Z';
1603         psinfo->pr_nice = task_nice(p);
1604         psinfo->pr_flag = p->flags;
1605         rcu_read_lock();
1606         cred = __task_cred(p);
1607         SET_UID(psinfo->pr_uid, from_kuid_munged(cred->user_ns, cred->uid));
1608         SET_GID(psinfo->pr_gid, from_kgid_munged(cred->user_ns, cred->gid));
1609         rcu_read_unlock();
1610         get_task_comm(psinfo->pr_fname, p);
1611
1612         return 0;
1613 }
1614
1615 static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm)
1616 {
1617         elf_addr_t *auxv = (elf_addr_t *) mm->saved_auxv;
1618         int i = 0;
1619         do
1620                 i += 2;
1621         while (auxv[i - 2] != AT_NULL);
1622         fill_note(note, "CORE", NT_AUXV, i * sizeof(elf_addr_t), auxv);
1623 }
1624
1625 static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata,
1626                 const kernel_siginfo_t *siginfo)
1627 {
1628         copy_siginfo_to_external(csigdata, siginfo);
1629         fill_note(note, "CORE", NT_SIGINFO, sizeof(*csigdata), csigdata);
1630 }
1631
1632 #define MAX_FILE_NOTE_SIZE (4*1024*1024)
1633 /*
1634  * Format of NT_FILE note:
1635  *
1636  * long count     -- how many files are mapped
1637  * long page_size -- units for file_ofs
1638  * array of [COUNT] elements of
1639  *   long start
1640  *   long end
1641  *   long file_ofs
1642  * followed by COUNT filenames in ASCII: "FILE1" NUL "FILE2" NUL...
1643  */
1644 static int fill_files_note(struct memelfnote *note, struct coredump_params *cprm)
1645 {
1646         unsigned count, size, names_ofs, remaining, n;
1647         user_long_t *data;
1648         user_long_t *start_end_ofs;
1649         char *name_base, *name_curpos;
1650         int i;
1651
1652         /* *Estimated* file count and total data size needed */
1653         count = cprm->vma_count;
1654         if (count > UINT_MAX / 64)
1655                 return -EINVAL;
1656         size = count * 64;
1657
1658         names_ofs = (2 + 3 * count) * sizeof(data[0]);
1659  alloc:
1660         if (size >= MAX_FILE_NOTE_SIZE) /* paranoia check */
1661                 return -EINVAL;
1662         size = round_up(size, PAGE_SIZE);
1663         /*
1664          * "size" can be 0 here legitimately.
1665          * Let it ENOMEM and omit NT_FILE section which will be empty anyway.
1666          */
1667         data = kvmalloc(size, GFP_KERNEL);
1668         if (ZERO_OR_NULL_PTR(data))
1669                 return -ENOMEM;
1670
1671         start_end_ofs = data + 2;
1672         name_base = name_curpos = ((char *)data) + names_ofs;
1673         remaining = size - names_ofs;
1674         count = 0;
1675         for (i = 0; i < cprm->vma_count; i++) {
1676                 struct core_vma_metadata *m = &cprm->vma_meta[i];
1677                 struct file *file;
1678                 const char *filename;
1679
1680                 file = m->file;
1681                 if (!file)
1682                         continue;
1683                 filename = file_path(file, name_curpos, remaining);
1684                 if (IS_ERR(filename)) {
1685                         if (PTR_ERR(filename) == -ENAMETOOLONG) {
1686                                 kvfree(data);
1687                                 size = size * 5 / 4;
1688                                 goto alloc;
1689                         }
1690                         continue;
1691                 }
1692
1693                 /* file_path() fills at the end, move name down */
1694                 /* n = strlen(filename) + 1: */
1695                 n = (name_curpos + remaining) - filename;
1696                 remaining = filename - name_curpos;
1697                 memmove(name_curpos, filename, n);
1698                 name_curpos += n;
1699
1700                 *start_end_ofs++ = m->start;
1701                 *start_end_ofs++ = m->end;
1702                 *start_end_ofs++ = m->pgoff;
1703                 count++;
1704         }
1705
1706         /* Now we know exact count of files, can store it */
1707         data[0] = count;
1708         data[1] = PAGE_SIZE;
1709         /*
1710          * Count usually is less than mm->map_count,
1711          * we need to move filenames down.
1712          */
1713         n = cprm->vma_count - count;
1714         if (n != 0) {
1715                 unsigned shift_bytes = n * 3 * sizeof(data[0]);
1716                 memmove(name_base - shift_bytes, name_base,
1717                         name_curpos - name_base);
1718                 name_curpos -= shift_bytes;
1719         }
1720
1721         size = name_curpos - (char *)data;
1722         fill_note(note, "CORE", NT_FILE, size, data);
1723         return 0;
1724 }
1725
1726 #include <linux/regset.h>
1727
1728 struct elf_thread_core_info {
1729         struct elf_thread_core_info *next;
1730         struct task_struct *task;
1731         struct elf_prstatus prstatus;
1732         struct memelfnote notes[];
1733 };
1734
1735 struct elf_note_info {
1736         struct elf_thread_core_info *thread;
1737         struct memelfnote psinfo;
1738         struct memelfnote signote;
1739         struct memelfnote auxv;
1740         struct memelfnote files;
1741         user_siginfo_t csigdata;
1742         size_t size;
1743         int thread_notes;
1744 };
1745
1746 #ifdef CORE_DUMP_USE_REGSET
1747 /*
1748  * When a regset has a writeback hook, we call it on each thread before
1749  * dumping user memory.  On register window machines, this makes sure the
1750  * user memory backing the register data is up to date before we read it.
1751  */
1752 static void do_thread_regset_writeback(struct task_struct *task,
1753                                        const struct user_regset *regset)
1754 {
1755         if (regset->writeback)
1756                 regset->writeback(task, regset, 1);
1757 }
1758
1759 #ifndef PRSTATUS_SIZE
1760 #define PRSTATUS_SIZE sizeof(struct elf_prstatus)
1761 #endif
1762
1763 #ifndef SET_PR_FPVALID
1764 #define SET_PR_FPVALID(S) ((S)->pr_fpvalid = 1)
1765 #endif
1766
1767 static int fill_thread_core_info(struct elf_thread_core_info *t,
1768                                  const struct user_regset_view *view,
1769                                  long signr, struct elf_note_info *info)
1770 {
1771         unsigned int note_iter, view_iter;
1772
1773         /*
1774          * NT_PRSTATUS is the one special case, because the regset data
1775          * goes into the pr_reg field inside the note contents, rather
1776          * than being the whole note contents.  We fill the regset in here.
1777          * We assume that regset 0 is NT_PRSTATUS.
1778          */
1779         fill_prstatus(&t->prstatus.common, t->task, signr);
1780         regset_get(t->task, &view->regsets[0],
1781                    sizeof(t->prstatus.pr_reg), &t->prstatus.pr_reg);
1782
1783         fill_note(&t->notes[0], "CORE", NT_PRSTATUS,
1784                   PRSTATUS_SIZE, &t->prstatus);
1785         info->size += notesize(&t->notes[0]);
1786
1787         do_thread_regset_writeback(t->task, &view->regsets[0]);
1788
1789         /*
1790          * Each other regset might generate a note too.  For each regset
1791          * that has no core_note_type or is inactive, skip it.
1792          */
1793         note_iter = 1;
1794         for (view_iter = 1; view_iter < view->n; ++view_iter) {
1795                 const struct user_regset *regset = &view->regsets[view_iter];
1796                 int note_type = regset->core_note_type;
1797                 bool is_fpreg = note_type == NT_PRFPREG;
1798                 void *data;
1799                 int ret;
1800
1801                 do_thread_regset_writeback(t->task, regset);
1802                 if (!note_type) // not for coredumps
1803                         continue;
1804                 if (regset->active && regset->active(t->task, regset) <= 0)
1805                         continue;
1806
1807                 ret = regset_get_alloc(t->task, regset, ~0U, &data);
1808                 if (ret < 0)
1809                         continue;
1810
1811                 if (WARN_ON_ONCE(note_iter >= info->thread_notes))
1812                         break;
1813
1814                 if (is_fpreg)
1815                         SET_PR_FPVALID(&t->prstatus);
1816
1817                 fill_note(&t->notes[note_iter], is_fpreg ? "CORE" : "LINUX",
1818                           note_type, ret, data);
1819
1820                 info->size += notesize(&t->notes[note_iter]);
1821                 note_iter++;
1822         }
1823
1824         return 1;
1825 }
1826 #else
1827 static int fill_thread_core_info(struct elf_thread_core_info *t,
1828                                  const struct user_regset_view *view,
1829                                  long signr, struct elf_note_info *info)
1830 {
1831         struct task_struct *p = t->task;
1832         elf_fpregset_t *fpu;
1833
1834         fill_prstatus(&t->prstatus.common, p, signr);
1835         elf_core_copy_task_regs(p, &t->prstatus.pr_reg);
1836
1837         fill_note(&t->notes[0], "CORE", NT_PRSTATUS, sizeof(t->prstatus),
1838                   &(t->prstatus));
1839         info->size += notesize(&t->notes[0]);
1840
1841         fpu = kzalloc(sizeof(elf_fpregset_t), GFP_KERNEL);
1842         if (!fpu || !elf_core_copy_task_fpregs(p, fpu)) {
1843                 kfree(fpu);
1844                 return 1;
1845         }
1846
1847         t->prstatus.pr_fpvalid = 1;
1848         fill_note(&t->notes[1], "CORE", NT_PRFPREG, sizeof(*fpu), fpu);
1849         info->size += notesize(&t->notes[1]);
1850
1851         return 1;
1852 }
1853 #endif
1854
1855 static int fill_note_info(struct elfhdr *elf, int phdrs,
1856                           struct elf_note_info *info,
1857                           struct coredump_params *cprm)
1858 {
1859         struct task_struct *dump_task = current;
1860         const struct user_regset_view *view;
1861         struct elf_thread_core_info *t;
1862         struct elf_prpsinfo *psinfo;
1863         struct core_thread *ct;
1864
1865         psinfo = kmalloc(sizeof(*psinfo), GFP_KERNEL);
1866         if (!psinfo)
1867                 return 0;
1868         fill_note(&info->psinfo, "CORE", NT_PRPSINFO, sizeof(*psinfo), psinfo);
1869
1870 #ifdef CORE_DUMP_USE_REGSET
1871         view = task_user_regset_view(dump_task);
1872
1873         /*
1874          * Figure out how many notes we're going to need for each thread.
1875          */
1876         info->thread_notes = 0;
1877         for (int i = 0; i < view->n; ++i)
1878                 if (view->regsets[i].core_note_type != 0)
1879                         ++info->thread_notes;
1880
1881         /*
1882          * Sanity check.  We rely on regset 0 being in NT_PRSTATUS,
1883          * since it is our one special case.
1884          */
1885         if (unlikely(info->thread_notes == 0) ||
1886             unlikely(view->regsets[0].core_note_type != NT_PRSTATUS)) {
1887                 WARN_ON(1);
1888                 return 0;
1889         }
1890
1891         /*
1892          * Initialize the ELF file header.
1893          */
1894         fill_elf_header(elf, phdrs,
1895                         view->e_machine, view->e_flags);
1896 #else
1897         view = NULL;
1898         info->thread_notes = 2;
1899         fill_elf_header(elf, phdrs, ELF_ARCH, ELF_CORE_EFLAGS);
1900 #endif
1901
1902         /*
1903          * Allocate a structure for each thread.
1904          */
1905         info->thread = kzalloc(offsetof(struct elf_thread_core_info,
1906                                      notes[info->thread_notes]),
1907                             GFP_KERNEL);
1908         if (unlikely(!info->thread))
1909                 return 0;
1910
1911         info->thread->task = dump_task;
1912         for (ct = dump_task->signal->core_state->dumper.next; ct; ct = ct->next) {
1913                 t = kzalloc(offsetof(struct elf_thread_core_info,
1914                                      notes[info->thread_notes]),
1915                             GFP_KERNEL);
1916                 if (unlikely(!t))
1917                         return 0;
1918
1919                 t->task = ct->task;
1920                 t->next = info->thread->next;
1921                 info->thread->next = t;
1922         }
1923
1924         /*
1925          * Now fill in each thread's information.
1926          */
1927         for (t = info->thread; t != NULL; t = t->next)
1928                 if (!fill_thread_core_info(t, view, cprm->siginfo->si_signo, info))
1929                         return 0;
1930
1931         /*
1932          * Fill in the two process-wide notes.
1933          */
1934         fill_psinfo(psinfo, dump_task->group_leader, dump_task->mm);
1935         info->size += notesize(&info->psinfo);
1936
1937         fill_siginfo_note(&info->signote, &info->csigdata, cprm->siginfo);
1938         info->size += notesize(&info->signote);
1939
1940         fill_auxv_note(&info->auxv, current->mm);
1941         info->size += notesize(&info->auxv);
1942
1943         if (fill_files_note(&info->files, cprm) == 0)
1944                 info->size += notesize(&info->files);
1945
1946         return 1;
1947 }
1948
1949 /*
1950  * Write all the notes for each thread.  When writing the first thread, the
1951  * process-wide notes are interleaved after the first thread-specific note.
1952  */
1953 static int write_note_info(struct elf_note_info *info,
1954                            struct coredump_params *cprm)
1955 {
1956         bool first = true;
1957         struct elf_thread_core_info *t = info->thread;
1958
1959         do {
1960                 int i;
1961
1962                 if (!writenote(&t->notes[0], cprm))
1963                         return 0;
1964
1965                 if (first && !writenote(&info->psinfo, cprm))
1966                         return 0;
1967                 if (first && !writenote(&info->signote, cprm))
1968                         return 0;
1969                 if (first && !writenote(&info->auxv, cprm))
1970                         return 0;
1971                 if (first && info->files.data &&
1972                                 !writenote(&info->files, cprm))
1973                         return 0;
1974
1975                 for (i = 1; i < info->thread_notes; ++i)
1976                         if (t->notes[i].data &&
1977                             !writenote(&t->notes[i], cprm))
1978                                 return 0;
1979
1980                 first = false;
1981                 t = t->next;
1982         } while (t);
1983
1984         return 1;
1985 }
1986
1987 static void free_note_info(struct elf_note_info *info)
1988 {
1989         struct elf_thread_core_info *threads = info->thread;
1990         while (threads) {
1991                 unsigned int i;
1992                 struct elf_thread_core_info *t = threads;
1993                 threads = t->next;
1994                 WARN_ON(t->notes[0].data && t->notes[0].data != &t->prstatus);
1995                 for (i = 1; i < info->thread_notes; ++i)
1996                         kfree(t->notes[i].data);
1997                 kfree(t);
1998         }
1999         kfree(info->psinfo.data);
2000         kvfree(info->files.data);
2001 }
2002
2003 static void fill_extnum_info(struct elfhdr *elf, struct elf_shdr *shdr4extnum,
2004                              elf_addr_t e_shoff, int segs)
2005 {
2006         elf->e_shoff = e_shoff;
2007         elf->e_shentsize = sizeof(*shdr4extnum);
2008         elf->e_shnum = 1;
2009         elf->e_shstrndx = SHN_UNDEF;
2010
2011         memset(shdr4extnum, 0, sizeof(*shdr4extnum));
2012
2013         shdr4extnum->sh_type = SHT_NULL;
2014         shdr4extnum->sh_size = elf->e_shnum;
2015         shdr4extnum->sh_link = elf->e_shstrndx;
2016         shdr4extnum->sh_info = segs;
2017 }
2018
2019 /*
2020  * Actual dumper
2021  *
2022  * This is a two-pass process; first we find the offsets of the bits,
2023  * and then they are actually written out.  If we run out of core limit
2024  * we just truncate.
2025  */
2026 static int elf_core_dump(struct coredump_params *cprm)
2027 {
2028         int has_dumped = 0;
2029         int segs, i;
2030         struct elfhdr elf;
2031         loff_t offset = 0, dataoff;
2032         struct elf_note_info info = { };
2033         struct elf_phdr *phdr4note = NULL;
2034         struct elf_shdr *shdr4extnum = NULL;
2035         Elf_Half e_phnum;
2036         elf_addr_t e_shoff;
2037
2038         /*
2039          * The number of segs are recored into ELF header as 16bit value.
2040          * Please check DEFAULT_MAX_MAP_COUNT definition when you modify here.
2041          */
2042         segs = cprm->vma_count + elf_core_extra_phdrs(cprm);
2043
2044         /* for notes section */
2045         segs++;
2046
2047         /* If segs > PN_XNUM(0xffff), then e_phnum overflows. To avoid
2048          * this, kernel supports extended numbering. Have a look at
2049          * include/linux/elf.h for further information. */
2050         e_phnum = segs > PN_XNUM ? PN_XNUM : segs;
2051
2052         /*
2053          * Collect all the non-memory information about the process for the
2054          * notes.  This also sets up the file header.
2055          */
2056         if (!fill_note_info(&elf, e_phnum, &info, cprm))
2057                 goto end_coredump;
2058
2059         has_dumped = 1;
2060
2061         offset += sizeof(elf);                          /* ELF header */
2062         offset += segs * sizeof(struct elf_phdr);       /* Program headers */
2063
2064         /* Write notes phdr entry */
2065         {
2066                 size_t sz = info.size;
2067
2068                 /* For cell spufs */
2069                 sz += elf_coredump_extra_notes_size();
2070
2071                 phdr4note = kmalloc(sizeof(*phdr4note), GFP_KERNEL);
2072                 if (!phdr4note)
2073                         goto end_coredump;
2074
2075                 fill_elf_note_phdr(phdr4note, sz, offset);
2076                 offset += sz;
2077         }
2078
2079         dataoff = offset = roundup(offset, ELF_EXEC_PAGESIZE);
2080
2081         offset += cprm->vma_data_size;
2082         offset += elf_core_extra_data_size(cprm);
2083         e_shoff = offset;
2084
2085         if (e_phnum == PN_XNUM) {
2086                 shdr4extnum = kmalloc(sizeof(*shdr4extnum), GFP_KERNEL);
2087                 if (!shdr4extnum)
2088                         goto end_coredump;
2089                 fill_extnum_info(&elf, shdr4extnum, e_shoff, segs);
2090         }
2091
2092         offset = dataoff;
2093
2094         if (!dump_emit(cprm, &elf, sizeof(elf)))
2095                 goto end_coredump;
2096
2097         if (!dump_emit(cprm, phdr4note, sizeof(*phdr4note)))
2098                 goto end_coredump;
2099
2100         /* Write program headers for segments dump */
2101         for (i = 0; i < cprm->vma_count; i++) {
2102                 struct core_vma_metadata *meta = cprm->vma_meta + i;
2103                 struct elf_phdr phdr;
2104
2105                 phdr.p_type = PT_LOAD;
2106                 phdr.p_offset = offset;
2107                 phdr.p_vaddr = meta->start;
2108                 phdr.p_paddr = 0;
2109                 phdr.p_filesz = meta->dump_size;
2110                 phdr.p_memsz = meta->end - meta->start;
2111                 offset += phdr.p_filesz;
2112                 phdr.p_flags = 0;
2113                 if (meta->flags & VM_READ)
2114                         phdr.p_flags |= PF_R;
2115                 if (meta->flags & VM_WRITE)
2116                         phdr.p_flags |= PF_W;
2117                 if (meta->flags & VM_EXEC)
2118                         phdr.p_flags |= PF_X;
2119                 phdr.p_align = ELF_EXEC_PAGESIZE;
2120
2121                 if (!dump_emit(cprm, &phdr, sizeof(phdr)))
2122                         goto end_coredump;
2123         }
2124
2125         if (!elf_core_write_extra_phdrs(cprm, offset))
2126                 goto end_coredump;
2127
2128         /* write out the notes section */
2129         if (!write_note_info(&info, cprm))
2130                 goto end_coredump;
2131
2132         /* For cell spufs */
2133         if (elf_coredump_extra_notes_write(cprm))
2134                 goto end_coredump;
2135
2136         /* Align to page */
2137         dump_skip_to(cprm, dataoff);
2138
2139         for (i = 0; i < cprm->vma_count; i++) {
2140                 struct core_vma_metadata *meta = cprm->vma_meta + i;
2141
2142                 if (!dump_user_range(cprm, meta->start, meta->dump_size))
2143                         goto end_coredump;
2144         }
2145
2146         if (!elf_core_write_extra_data(cprm))
2147                 goto end_coredump;
2148
2149         if (e_phnum == PN_XNUM) {
2150                 if (!dump_emit(cprm, shdr4extnum, sizeof(*shdr4extnum)))
2151                         goto end_coredump;
2152         }
2153
2154 end_coredump:
2155         free_note_info(&info);
2156         kfree(shdr4extnum);
2157         kfree(phdr4note);
2158         return has_dumped;
2159 }
2160
2161 #endif          /* CONFIG_ELF_CORE */
2162
2163 static int __init init_elf_binfmt(void)
2164 {
2165         register_binfmt(&elf_format);
2166         return 0;
2167 }
2168
2169 static void __exit exit_elf_binfmt(void)
2170 {
2171         /* Remove the COFF and ELF loaders. */
2172         unregister_binfmt(&elf_format);
2173 }
2174
2175 core_initcall(init_elf_binfmt);
2176 module_exit(exit_elf_binfmt);
2177
2178 #ifdef CONFIG_BINFMT_ELF_KUNIT_TEST
2179 #include "binfmt_elf_test.c"
2180 #endif