1 // SPDX-License-Identifier: GPL-2.0-only
3 * linux/fs/binfmt_elf.c
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
10 * Copyright 1993, 1994: Eric Youngdale (ericy@cais.com).
13 #include <linux/module.h>
14 #include <linux/kernel.h>
16 #include <linux/log2.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>
58 #define user_long_t long
60 #ifndef user_siginfo_t
61 #define user_siginfo_t siginfo_t
64 /* That's for binfmt_elf_fdpic to deal with */
65 #ifndef elf_check_fdpic
66 #define elf_check_fdpic(ex) false
69 static int load_elf_binary(struct linux_binprm *bprm);
72 static int load_elf_library(struct file *);
74 #define load_elf_library NULL
78 * If we don't support core dumping, then supply a NULL so we
81 #ifdef CONFIG_ELF_CORE
82 static int elf_core_dump(struct coredump_params *cprm);
84 #define elf_core_dump NULL
87 #if ELF_EXEC_PAGESIZE > PAGE_SIZE
88 #define ELF_MIN_ALIGN ELF_EXEC_PAGESIZE
90 #define ELF_MIN_ALIGN PAGE_SIZE
93 #ifndef ELF_CORE_EFLAGS
94 #define ELF_CORE_EFLAGS 0
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))
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,
111 #define BAD_ADDR(x) (unlikely((unsigned long)(x) >= TASK_SIZE))
113 static int set_brk(unsigned long start, unsigned long end, int prot)
115 start = ELF_PAGEALIGN(start);
116 end = ELF_PAGEALIGN(end);
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).
123 int error = vm_brk_flags(start, end - start,
124 prot & PROT_EXEC ? VM_EXEC : 0);
128 current->mm->start_brk = current->mm->brk = end;
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
137 static int padzero(unsigned long elf_bss)
141 nbyte = ELF_PAGEOFFSET(elf_bss);
143 nbyte = ELF_MIN_ALIGN - nbyte;
144 if (clear_user((void __user *) elf_bss, nbyte))
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; \
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)
165 #ifndef ELF_BASE_PLATFORM
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.
171 #define ELF_BASE_PLATFORM NULL
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)
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];
191 elf_addr_t *elf_info;
192 elf_addr_t flags = 0;
194 const struct cred *cred = current_cred();
195 struct vm_area_struct *vma;
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.
203 p = arch_align_stack(p);
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
213 size_t len = strlen(k_platform) + 1;
215 u_platform = (elf_addr_t __user *)STACK_ALLOC(p, len);
216 if (copy_to_user(u_platform, k_platform, len))
221 * If this architecture has a "base" platform capability
222 * string, copy it to userspace.
224 u_base_platform = NULL;
225 if (k_base_platform) {
226 size_t len = strlen(k_base_platform) + 1;
228 u_base_platform = (elf_addr_t __user *)STACK_ALLOC(p, len);
229 if (copy_to_user(u_base_platform, k_base_platform, len))
234 * Generate 16 random bytes for userspace PRNG seeding.
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)))
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) \
253 * ARCH_DLINFO must come first so PPC can do its special alignment of
255 * update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT() in
256 * ARCH_DLINFO changes
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);
278 NEW_AUX_ENT(AT_HWCAP2, ELF_HWCAP2);
280 NEW_AUX_ENT(AT_EXECFN, bprm->exec);
282 NEW_AUX_ENT(AT_PLATFORM,
283 (elf_addr_t)(unsigned long)u_platform);
285 if (k_base_platform) {
286 NEW_AUX_ENT(AT_BASE_PLATFORM,
287 (elf_addr_t)(unsigned long)u_base_platform);
289 if (bprm->have_execfd) {
290 NEW_AUX_ENT(AT_EXECFD, bprm->execfd);
293 NEW_AUX_ENT(AT_RSEQ_FEATURE_SIZE, offsetof(struct rseq, end));
294 NEW_AUX_ENT(AT_RSEQ_ALIGN, __alignof__(struct rseq));
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);
301 /* And advance past the AT_NULL entry. */
304 ei_index = elf_info - (elf_addr_t *)mm->saved_auxv;
305 sp = STACK_ADD(p, ei_index);
307 items = (argc + 1) + (envc + 1) + 1;
308 bprm->p = STACK_ROUND(sp, items);
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 */
315 sp = (elf_addr_t __user *)bprm->p;
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.
323 if (mmap_read_lock_killable(mm))
325 vma = find_extend_vma(mm, bprm->p);
326 mmap_read_unlock(mm);
330 /* Now, let's put argc (and argv, envp if appropriate) on the stack */
331 if (put_user(argc, sp++))
334 /* Populate list of argv pointers back to argv strings. */
335 p = mm->arg_end = mm->arg_start;
338 if (put_user((elf_addr_t)p, sp++))
340 len = strnlen_user((void __user *)p, MAX_ARG_STRLEN);
341 if (!len || len > MAX_ARG_STRLEN)
345 if (put_user(0, sp++))
349 /* Populate list of envp pointers back to envp strings. */
350 mm->env_end = mm->env_start = p;
353 if (put_user((elf_addr_t)p, sp++))
355 len = strnlen_user((void __user *)p, MAX_ARG_STRLEN);
356 if (!len || len > MAX_ARG_STRLEN)
360 if (put_user(0, sp++))
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)))
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)
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);
380 /* mmap() will return -EINVAL if given a zero size, but a
381 * segment with zero filesize is perfectly valid */
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.)
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);
399 map_addr = vm_mmap(filep, addr, size, prot, type, off);
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);
409 static unsigned long total_mapping_size(const struct elf_phdr *phdr, int nr)
411 elf_addr_t min_addr = -1;
412 elf_addr_t max_addr = 0;
413 bool pt_load = false;
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);
423 return pt_load ? (max_addr - min_addr) : 0;
426 static int elf_read(struct file *file, void *buf, size_t len, loff_t pos)
430 rv = kernel_read(file, buf, len, &pos);
431 if (unlikely(rv != len)) {
432 return (rv < 0) ? rv : -EIO;
437 static unsigned long maximum_alignment(struct elf_phdr *cmds, int nr)
439 unsigned long alignment = 0;
442 for (i = 0; i < nr; i++) {
443 if (cmds[i].p_type == PT_LOAD) {
444 unsigned long p_align = cmds[i].p_align;
446 /* skip non-power of two alignments as invalid */
447 if (!is_power_of_2(p_align))
449 alignment = max(alignment, p_align);
453 /* ensure we align to at least one page */
454 return ELF_PAGEALIGN(alignment);
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
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.
466 static struct elf_phdr *load_elf_phdrs(const struct elfhdr *elf_ex,
467 struct file *elf_file)
469 struct elf_phdr *elf_phdata = NULL;
474 * If the size of this structure has changed, then punt, since
475 * we will be doing the wrong thing.
477 if (elf_ex->e_phentsize != sizeof(struct elf_phdr))
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)
486 elf_phdata = kmalloc(size, GFP_KERNEL);
490 /* Read in the program headers */
491 retval = elf_read(elf_file, elf_phdata, size, elf_ex->e_phoff);
501 #ifndef CONFIG_ARCH_BINFMT_ELF_STATE
504 * struct arch_elf_state - arch-specific ELF loading state
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).
511 * This implementation is a dummy for architectures which require no
514 struct arch_elf_state {
517 #define INIT_ARCH_ELF_STATE {}
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.
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
534 * Return: Zero to proceed with the ELF load, non-zero to fail the ELF load
535 * with that return code.
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)
542 /* Dummy implementation, always proceed */
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.
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.
558 * Return: Zero to proceed with the ELF load, non-zero to fail the ELF load
559 * with that return code.
561 static inline int arch_check_elf(struct elfhdr *ehdr, bool has_interp,
562 struct elfhdr *interp_ehdr,
563 struct arch_elf_state *state)
565 /* Dummy implementation, always proceed */
569 #endif /* !CONFIG_ARCH_BINFMT_ELF_STATE */
571 static inline int make_prot(u32 p_flags, struct arch_elf_state *arch_state,
572 bool has_interp, bool is_interp)
583 return arch_elf_adjust_prot(prot, arch_state, has_interp, is_interp);
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
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)
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;
601 unsigned long error = ~0UL;
602 unsigned long total_size;
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)
609 if (!elf_check_arch(interp_elf_ex) ||
610 elf_check_fdpic(interp_elf_ex))
612 if (!interpreter->f_op->mmap)
615 total_size = total_mapping_size(interp_elf_phdata,
616 interp_elf_ex->e_phnum);
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,
628 unsigned long vaddr = 0;
629 unsigned long k, map_addr;
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)
637 map_addr = elf_map(interpreter, load_addr + vaddr,
638 eppnt, elf_prot, elf_type, total_size);
641 if (BAD_ADDR(map_addr))
644 if (!load_addr_set &&
645 interp_elf_ex->e_type == ET_DYN) {
646 load_addr = map_addr - ELF_PAGESTART(vaddr);
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.
655 k = load_addr + eppnt->p_vaddr;
657 eppnt->p_filesz > eppnt->p_memsz ||
658 eppnt->p_memsz > TASK_SIZE ||
659 TASK_SIZE - eppnt->p_memsz < k) {
665 * Find the end of the file mapping for this phdr, and
666 * keep track of the largest address we see for this.
668 k = load_addr + eppnt->p_vaddr + eppnt->p_filesz;
673 * Do the same thing for the memory mapping - between
674 * elf_bss and last_bss is the bss section.
676 k = load_addr + eppnt->p_vaddr + eppnt->p_memsz;
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.
689 if (padzero(elf_bss)) {
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.
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);
714 * These are the functions used to load ELF style executables and shared
715 * libraries. There is no binary dependent code anywhere else.
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)
723 const struct gnu_property *pr;
729 if (WARN_ON_ONCE(*off > datasz || *off % ELF_GNU_PROPERTY_ALIGN))
734 if (datasz < sizeof(*pr))
736 pr = (const struct gnu_property *)(data + o);
738 datasz -= sizeof(*pr);
740 if (pr->pr_datasz > datasz)
743 WARN_ON_ONCE(o % ELF_GNU_PROPERTY_ALIGN);
744 step = round_up(pr->pr_datasz, ELF_GNU_PROPERTY_ALIGN);
748 /* Properties are supposed to be unique and sorted on pr_type: */
749 if (have_prev_type && pr->pr_type <= *prev_type)
751 *prev_type = pr->pr_type;
753 ret = arch_parse_elf_property(pr->pr_type, data + o,
754 pr->pr_datasz, ELF_COMPAT, arch);
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))
766 static int parse_elf_properties(struct file *f, const struct elf_phdr *phdr,
767 struct arch_elf_state *arch)
770 struct elf_note nhdr;
771 char data[NOTE_DATA_SZ];
780 if (!IS_ENABLED(CONFIG_ARCH_USE_GNU_PROPERTY) || !phdr)
783 /* load_elf_binary() shouldn't call us unless this is true... */
784 if (WARN_ON_ONCE(phdr->p_type != PT_GNU_PROPERTY))
787 /* If the properties are crazy large, that's too bad (for now): */
788 if (phdr->p_filesz > sizeof(note))
791 pos = phdr->p_offset;
792 n = kernel_read(f, ¬e, phdr->p_filesz, &pos);
794 BUILD_BUG_ON(sizeof(note) < sizeof(note.nhdr) + NOTE_NAME_SZ);
795 if (n < 0 || n < sizeof(note.nhdr) + NOTE_NAME_SZ)
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)))
804 off = round_up(sizeof(note.nhdr) + NOTE_NAME_SZ,
805 ELF_GNU_PROPERTY_ALIGN);
809 if (note.nhdr.n_descsz > n - off)
811 datasz = off + note.nhdr.n_descsz;
813 have_prev_type = false;
815 ret = parse_elf_property(note.data, &off, datasz, arch,
816 have_prev_type, &prev_type);
817 have_prev_type = true;
820 return ret == -ENOENT ? 0 : ret;
823 static int load_elf_binary(struct linux_binprm *bprm)
825 struct file *interpreter = NULL; /* to shut gcc up */
826 unsigned long load_bias = 0, phdr_addr = 0;
827 int first_pt_load = 1;
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;
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;
847 /* First of all, some simple consistency checks */
848 if (memcmp(elf_ex->e_ident, ELFMAG, SELFMAG) != 0)
851 if (elf_ex->e_type != ET_EXEC && elf_ex->e_type != ET_DYN)
853 if (!elf_check_arch(elf_ex))
855 if (elf_check_fdpic(elf_ex))
857 if (!bprm->file->f_op->mmap)
860 elf_phdata = load_elf_phdrs(elf_ex, bprm->file);
864 elf_ppnt = elf_phdata;
865 for (i = 0; i < elf_ex->e_phnum; i++, elf_ppnt++) {
866 char *elf_interpreter;
868 if (elf_ppnt->p_type == PT_GNU_PROPERTY) {
869 elf_property_phdata = elf_ppnt;
873 if (elf_ppnt->p_type != PT_INTERP)
877 * This is the program interpreter used for shared libraries -
878 * for now assume that this is an a.out format binary.
881 if (elf_ppnt->p_filesz > PATH_MAX || elf_ppnt->p_filesz < 2)
885 elf_interpreter = kmalloc(elf_ppnt->p_filesz, GFP_KERNEL);
886 if (!elf_interpreter)
889 retval = elf_read(bprm->file, elf_interpreter, elf_ppnt->p_filesz,
892 goto out_free_interp;
893 /* make sure path is NULL terminated */
895 if (elf_interpreter[elf_ppnt->p_filesz - 1] != '\0')
896 goto out_free_interp;
898 interpreter = open_exec(elf_interpreter);
899 kfree(elf_interpreter);
900 retval = PTR_ERR(interpreter);
901 if (IS_ERR(interpreter))
905 * If the binary is not readable then enforce mm->dumpable = 0
906 * regardless of the interpreter's permissions.
908 would_dump(bprm, interpreter);
910 interp_elf_ex = kmalloc(sizeof(*interp_elf_ex), GFP_KERNEL);
911 if (!interp_elf_ex) {
916 /* Get the exec headers */
917 retval = elf_read(interpreter, interp_elf_ex,
918 sizeof(*interp_elf_ex), 0);
920 goto out_free_dentry;
925 kfree(elf_interpreter);
929 elf_ppnt = elf_phdata;
930 for (i = 0; i < elf_ex->e_phnum; i++, elf_ppnt++)
931 switch (elf_ppnt->p_type) {
933 if (elf_ppnt->p_flags & PF_X)
934 executable_stack = EXSTACK_ENABLE_X;
936 executable_stack = EXSTACK_DISABLE_X;
939 case PT_LOPROC ... PT_HIPROC:
940 retval = arch_elf_pt_proc(elf_ex, elf_ppnt,
944 goto out_free_dentry;
948 /* Some simple consistency checks for the interpreter */
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;
959 /* Load the interpreter program headers */
960 interp_elf_phdata = load_elf_phdrs(interp_elf_ex,
962 if (!interp_elf_phdata)
963 goto out_free_dentry;
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;
974 case PT_LOPROC ... PT_HIPROC:
975 retval = arch_elf_pt_proc(interp_elf_ex,
976 elf_ppnt, interpreter,
979 goto out_free_dentry;
984 retval = parse_elf_properties(interpreter ?: bprm->file,
985 elf_property_phdata, &arch_state);
987 goto out_free_dentry;
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
994 retval = arch_check_elf(elf_ex,
995 !!interpreter, interp_elf_ex,
998 goto out_free_dentry;
1000 /* Flush all traces of the currently running executable */
1001 retval = begin_new_exec(bprm);
1003 goto out_free_dentry;
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;
1011 if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
1012 current->flags |= PF_RANDOMIZE;
1014 setup_new_exec(bprm);
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),
1021 goto out_free_dentry;
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;
1040 if (elf_ppnt->p_type != PT_LOAD)
1043 if (unlikely (elf_brk > elf_bss)) {
1044 unsigned long nbyte;
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,
1053 goto out_free_dentry;
1054 nbyte = ELF_PAGEOFFSET(elf_bss);
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)) {
1062 * This bss-zeroing can fail if the ELF
1063 * file specifies odd protections. So
1064 * we don't check the return value
1070 elf_prot = make_prot(elf_ppnt->p_flags, &arch_state,
1071 !!interpreter, false);
1073 elf_flags = MAP_PRIVATE;
1075 vaddr = elf_ppnt->p_vaddr;
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.
1082 if (!first_pt_load) {
1083 elf_flags |= MAP_FIXED;
1084 } else if (elf_ex->e_type == ET_EXEC) {
1086 * This logic is run once for the first LOAD Program
1087 * Header for ET_EXEC binaries. No special handling
1090 elf_flags |= MAP_FIXED_NOREPLACE;
1091 } else if (elf_ex->e_type == ET_DYN) {
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
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
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).
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);
1125 load_bias &= ~(alignment - 1);
1126 elf_flags |= MAP_FIXED_NOREPLACE;
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.
1137 load_bias = ELF_PAGESTART(load_bias - vaddr);
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.
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.
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.
1157 total_size = total_mapping_size(elf_phdata,
1161 goto out_free_dentry;
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;
1173 if (first_pt_load) {
1175 if (elf_ex->e_type == ET_DYN) {
1176 load_bias += error -
1177 ELF_PAGESTART(load_bias + vaddr);
1178 reloc_func_desc = load_bias;
1183 * Figure out which segment in the file contains the Program
1184 * Header table, and map to the associated memory address.
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 +
1192 k = elf_ppnt->p_vaddr;
1193 if ((elf_ppnt->p_flags & PF_X) && k < start_code)
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.
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. */
1208 goto out_free_dentry;
1211 k = elf_ppnt->p_vaddr + elf_ppnt->p_filesz;
1215 if ((elf_ppnt->p_flags & PF_X) && end_code < k)
1219 k = elf_ppnt->p_vaddr + elf_ppnt->p_memsz;
1221 bss_prot = elf_prot;
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;
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.
1240 retval = set_brk(elf_bss, elf_brk, bss_prot);
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;
1249 elf_entry = load_elf_interp(interp_elf_ex,
1251 load_bias, interp_elf_phdata,
1253 if (!IS_ERR_VALUE(elf_entry)) {
1255 * load_elf_interp() returns relocation
1258 interp_load_addr = elf_entry;
1259 elf_entry += interp_elf_ex->e_entry;
1261 if (BAD_ADDR(elf_entry)) {
1262 retval = IS_ERR_VALUE(elf_entry) ?
1263 (int)elf_entry : -EINVAL;
1264 goto out_free_dentry;
1266 reloc_func_desc = interp_load_addr;
1268 allow_write_access(interpreter);
1271 kfree(interp_elf_ex);
1272 kfree(interp_elf_phdata);
1274 elf_entry = e_entry;
1275 if (BAD_ADDR(elf_entry)) {
1277 goto out_free_dentry;
1283 set_binfmt(&elf_format);
1285 #ifdef ARCH_HAS_SETUP_ADDITIONAL_PAGES
1286 retval = ARCH_SETUP_ADDITIONAL_PAGES(bprm, elf_ex, !!interpreter);
1289 #endif /* ARCH_HAS_SETUP_ADDITIONAL_PAGES */
1291 retval = create_elf_tables(bprm, elf_ex, interp_load_addr,
1292 e_entry, phdr_addr);
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;
1303 if ((current->flags & PF_RANDOMIZE) && (randomize_va_space > 1)) {
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.
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;
1316 mm->brk = mm->start_brk = arch_randomize_brk(mm);
1317 #ifdef compat_brk_randomized
1318 current->brk_randomized = 1;
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);
1331 regs = current_pt_regs();
1332 #ifdef ELF_PLAT_INIT
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.
1343 ELF_PLAT_INIT(regs, reloc_func_desc);
1346 finalize_exec(bprm);
1347 START_THREAD(elf_ex, regs, elf_entry, bprm->p);
1354 kfree(interp_elf_ex);
1355 kfree(interp_elf_phdata);
1357 allow_write_access(interpreter);
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)
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;
1377 retval = elf_read(file, &elf_ex, sizeof(elf_ex), 0);
1381 if (memcmp(elf_ex.e_ident, ELFMAG, SELFMAG) != 0)
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)
1388 if (elf_check_fdpic(&elf_ex))
1391 /* Now read in all of the header information */
1393 j = sizeof(struct elf_phdr) * elf_ex.e_phnum;
1394 /* j < ELF_MIN_ALIGN because elf_ex.e_phnum <= 2 */
1397 elf_phdata = kmalloc(j, GFP_KERNEL);
1403 retval = elf_read(file, eppnt, j, elf_ex.e_phoff);
1407 for (j = 0, i = 0; i<elf_ex.e_phnum; i++)
1408 if ((eppnt + i)->p_type == PT_LOAD)
1413 while (eppnt->p_type != PT_LOAD)
1416 /* Now use mmap to map the library into memory. */
1417 error = vm_mmap(file,
1418 ELF_PAGESTART(eppnt->p_vaddr),
1420 ELF_PAGEOFFSET(eppnt->p_vaddr)),
1421 PROT_READ | PROT_WRITE | PROT_EXEC,
1422 MAP_FIXED_NOREPLACE | MAP_PRIVATE,
1424 ELF_PAGEOFFSET(eppnt->p_vaddr)));
1425 if (error != ELF_PAGESTART(eppnt->p_vaddr))
1428 elf_bss = eppnt->p_vaddr + eppnt->p_filesz;
1429 if (padzero(elf_bss)) {
1434 len = ELF_PAGEALIGN(eppnt->p_filesz + eppnt->p_vaddr);
1435 bss = ELF_PAGEALIGN(eppnt->p_memsz + eppnt->p_vaddr);
1437 error = vm_brk(len, bss - len);
1448 #endif /* #ifdef CONFIG_USELIB */
1450 #ifdef CONFIG_ELF_CORE
1454 * Modelled on fs/exec.c:aout_core_dump()
1455 * Jeremy Fitzhardinge <jeremy@sw.oz.au>
1458 /* An ELF note in memory */
1463 unsigned int datasz;
1467 static int notesize(struct memelfnote *en)
1471 sz = sizeof(struct elf_note);
1472 sz += roundup(strlen(en->name) + 1, 4);
1473 sz += roundup(en->datasz, 4);
1478 static int writenote(struct memelfnote *men, struct coredump_params *cprm)
1481 en.n_namesz = strlen(men->name) + 1;
1482 en.n_descsz = men->datasz;
1483 en.n_type = men->type;
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);
1490 static void fill_elf_header(struct elfhdr *elf, int segs,
1491 u16 machine, u32 flags)
1493 memset(elf, 0, sizeof(*elf));
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;
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;
1511 static void fill_elf_note_phdr(struct elf_phdr *phdr, int sz, loff_t offset)
1513 phdr->p_type = PT_NOTE;
1514 phdr->p_offset = offset;
1517 phdr->p_filesz = sz;
1523 static void fill_note(struct memelfnote *note, const char *name, int type,
1524 unsigned int sz, void *data)
1533 * fill up all the fields in prstatus from the given task struct, except
1534 * registers which need to be filled up separately.
1536 static void fill_prstatus(struct elf_prstatus_common *prstatus,
1537 struct task_struct *p, long signr)
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];
1543 prstatus->pr_ppid = task_pid_vnr(rcu_dereference(p->real_parent));
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;
1552 * This is the record for the group leader. It shows the
1553 * group-wide total, not its individual thread total.
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);
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);
1566 prstatus->pr_cutime = ns_to_kernel_old_timeval(p->signal->cutime);
1567 prstatus->pr_cstime = ns_to_kernel_old_timeval(p->signal->cstime);
1570 static int fill_psinfo(struct elf_prpsinfo *psinfo, struct task_struct *p,
1571 struct mm_struct *mm)
1573 const struct cred *cred;
1574 unsigned int i, len;
1577 /* first copy the parameters from user space */
1578 memset(psinfo, 0, sizeof(struct elf_prpsinfo));
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))
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;
1592 psinfo->pr_ppid = task_pid_vnr(rcu_dereference(p->real_parent));
1594 psinfo->pr_pid = task_pid_vnr(p);
1595 psinfo->pr_pgrp = task_pgrp_vnr(p);
1596 psinfo->pr_sid = task_session_vnr(p);
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;
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));
1610 get_task_comm(psinfo->pr_fname, p);
1615 static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm)
1617 elf_addr_t *auxv = (elf_addr_t *) mm->saved_auxv;
1621 while (auxv[i - 2] != AT_NULL);
1622 fill_note(note, "CORE", NT_AUXV, i * sizeof(elf_addr_t), auxv);
1625 static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata,
1626 const kernel_siginfo_t *siginfo)
1628 copy_siginfo_to_external(csigdata, siginfo);
1629 fill_note(note, "CORE", NT_SIGINFO, sizeof(*csigdata), csigdata);
1632 #define MAX_FILE_NOTE_SIZE (4*1024*1024)
1634 * Format of NT_FILE note:
1636 * long count -- how many files are mapped
1637 * long page_size -- units for file_ofs
1638 * array of [COUNT] elements of
1642 * followed by COUNT filenames in ASCII: "FILE1" NUL "FILE2" NUL...
1644 static int fill_files_note(struct memelfnote *note, struct coredump_params *cprm)
1646 unsigned count, size, names_ofs, remaining, n;
1648 user_long_t *start_end_ofs;
1649 char *name_base, *name_curpos;
1652 /* *Estimated* file count and total data size needed */
1653 count = cprm->vma_count;
1654 if (count > UINT_MAX / 64)
1658 names_ofs = (2 + 3 * count) * sizeof(data[0]);
1660 if (size >= MAX_FILE_NOTE_SIZE) /* paranoia check */
1662 size = round_up(size, PAGE_SIZE);
1664 * "size" can be 0 here legitimately.
1665 * Let it ENOMEM and omit NT_FILE section which will be empty anyway.
1667 data = kvmalloc(size, GFP_KERNEL);
1668 if (ZERO_OR_NULL_PTR(data))
1671 start_end_ofs = data + 2;
1672 name_base = name_curpos = ((char *)data) + names_ofs;
1673 remaining = size - names_ofs;
1675 for (i = 0; i < cprm->vma_count; i++) {
1676 struct core_vma_metadata *m = &cprm->vma_meta[i];
1678 const char *filename;
1683 filename = file_path(file, name_curpos, remaining);
1684 if (IS_ERR(filename)) {
1685 if (PTR_ERR(filename) == -ENAMETOOLONG) {
1687 size = size * 5 / 4;
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);
1700 *start_end_ofs++ = m->start;
1701 *start_end_ofs++ = m->end;
1702 *start_end_ofs++ = m->pgoff;
1706 /* Now we know exact count of files, can store it */
1708 data[1] = PAGE_SIZE;
1710 * Count usually is less than mm->map_count,
1711 * we need to move filenames down.
1713 n = cprm->vma_count - count;
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;
1721 size = name_curpos - (char *)data;
1722 fill_note(note, "CORE", NT_FILE, size, data);
1726 #include <linux/regset.h>
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[];
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;
1746 #ifdef CORE_DUMP_USE_REGSET
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.
1752 static void do_thread_regset_writeback(struct task_struct *task,
1753 const struct user_regset *regset)
1755 if (regset->writeback)
1756 regset->writeback(task, regset, 1);
1759 #ifndef PRSTATUS_SIZE
1760 #define PRSTATUS_SIZE sizeof(struct elf_prstatus)
1763 #ifndef SET_PR_FPVALID
1764 #define SET_PR_FPVALID(S) ((S)->pr_fpvalid = 1)
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)
1771 unsigned int note_iter, view_iter;
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 reset in here.
1777 * We assume that regset 0 is NT_PRSTATUS.
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);
1783 fill_note(&t->notes[0], "CORE", NT_PRSTATUS,
1784 PRSTATUS_SIZE, &t->prstatus);
1785 info->size += notesize(&t->notes[0]);
1787 do_thread_regset_writeback(t->task, &view->regsets[0]);
1790 * Each other regset might generate a note too. For each regset
1791 * that has no core_note_type or is inactive, skip it.
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;
1801 do_thread_regset_writeback(t->task, regset);
1802 if (!note_type) // not for coredumps
1804 if (regset->active && regset->active(t->task, regset) <= 0)
1807 ret = regset_get_alloc(t->task, regset, ~0U, &data);
1811 if (WARN_ON_ONCE(note_iter >= info->thread_notes))
1815 SET_PR_FPVALID(&t->prstatus);
1817 fill_note(&t->notes[note_iter], is_fpreg ? "CORE" : "LINUX",
1818 note_type, ret, data);
1820 info->size += notesize(&t->notes[note_iter]);
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)
1831 struct task_struct *p = t->task;
1832 elf_fpregset_t *fpu;
1834 fill_prstatus(&t->prstatus.common, p, signr);
1835 elf_core_copy_task_regs(p, &t->prstatus.pr_reg);
1837 fill_note(&t->notes[0], "CORE", NT_PRSTATUS, sizeof(t->prstatus),
1839 info->size += notesize(&t->notes[0]);
1841 fpu = kzalloc(sizeof(elf_fpregset_t), GFP_KERNEL);
1842 if (!fpu || !elf_core_copy_task_fpregs(p, fpu)) {
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]);
1855 static int fill_note_info(struct elfhdr *elf, int phdrs,
1856 struct elf_note_info *info,
1857 struct coredump_params *cprm)
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;
1865 psinfo = kmalloc(sizeof(*psinfo), GFP_KERNEL);
1868 fill_note(&info->psinfo, "CORE", NT_PRPSINFO, sizeof(*psinfo), psinfo);
1870 #ifdef CORE_DUMP_USE_REGSET
1871 view = task_user_regset_view(dump_task);
1874 * Figure out how many notes we're going to need for each thread.
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;
1882 * Sanity check. We rely on regset 0 being in NT_PRSTATUS,
1883 * since it is our one special case.
1885 if (unlikely(info->thread_notes == 0) ||
1886 unlikely(view->regsets[0].core_note_type != NT_PRSTATUS)) {
1892 * Initialize the ELF file header.
1894 fill_elf_header(elf, phdrs,
1895 view->e_machine, view->e_flags);
1898 info->thread_notes = 2;
1899 fill_elf_header(elf, phdrs, ELF_ARCH, ELF_CORE_EFLAGS);
1903 * Allocate a structure for each thread.
1905 info->thread = kzalloc(offsetof(struct elf_thread_core_info,
1906 notes[info->thread_notes]),
1908 if (unlikely(!info->thread))
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]),
1920 t->next = info->thread->next;
1921 info->thread->next = t;
1925 * Now fill in each thread's information.
1927 for (t = info->thread; t != NULL; t = t->next)
1928 if (!fill_thread_core_info(t, view, cprm->siginfo->si_signo, info))
1932 * Fill in the two process-wide notes.
1934 fill_psinfo(psinfo, dump_task->group_leader, dump_task->mm);
1935 info->size += notesize(&info->psinfo);
1937 fill_siginfo_note(&info->signote, &info->csigdata, cprm->siginfo);
1938 info->size += notesize(&info->signote);
1940 fill_auxv_note(&info->auxv, current->mm);
1941 info->size += notesize(&info->auxv);
1943 if (fill_files_note(&info->files, cprm) == 0)
1944 info->size += notesize(&info->files);
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.
1953 static int write_note_info(struct elf_note_info *info,
1954 struct coredump_params *cprm)
1957 struct elf_thread_core_info *t = info->thread;
1962 if (!writenote(&t->notes[0], cprm))
1965 if (first && !writenote(&info->psinfo, cprm))
1967 if (first && !writenote(&info->signote, cprm))
1969 if (first && !writenote(&info->auxv, cprm))
1971 if (first && info->files.data &&
1972 !writenote(&info->files, cprm))
1975 for (i = 1; i < info->thread_notes; ++i)
1976 if (t->notes[i].data &&
1977 !writenote(&t->notes[i], cprm))
1987 static void free_note_info(struct elf_note_info *info)
1989 struct elf_thread_core_info *threads = info->thread;
1992 struct elf_thread_core_info *t = threads;
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);
1999 kfree(info->psinfo.data);
2000 kvfree(info->files.data);
2003 static void fill_extnum_info(struct elfhdr *elf, struct elf_shdr *shdr4extnum,
2004 elf_addr_t e_shoff, int segs)
2006 elf->e_shoff = e_shoff;
2007 elf->e_shentsize = sizeof(*shdr4extnum);
2009 elf->e_shstrndx = SHN_UNDEF;
2011 memset(shdr4extnum, 0, sizeof(*shdr4extnum));
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;
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
2026 static int elf_core_dump(struct coredump_params *cprm)
2031 loff_t offset = 0, dataoff;
2032 struct elf_note_info info = { };
2033 struct elf_phdr *phdr4note = NULL;
2034 struct elf_shdr *shdr4extnum = NULL;
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.
2042 segs = cprm->vma_count + elf_core_extra_phdrs(cprm);
2044 /* for notes section */
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;
2053 * Collect all the non-memory information about the process for the
2054 * notes. This also sets up the file header.
2056 if (!fill_note_info(&elf, e_phnum, &info, cprm))
2061 offset += sizeof(elf); /* Elf header */
2062 offset += segs * sizeof(struct elf_phdr); /* Program headers */
2064 /* Write notes phdr entry */
2066 size_t sz = info.size;
2068 /* For cell spufs */
2069 sz += elf_coredump_extra_notes_size();
2071 phdr4note = kmalloc(sizeof(*phdr4note), GFP_KERNEL);
2075 fill_elf_note_phdr(phdr4note, sz, offset);
2079 dataoff = offset = roundup(offset, ELF_EXEC_PAGESIZE);
2081 offset += cprm->vma_data_size;
2082 offset += elf_core_extra_data_size(cprm);
2085 if (e_phnum == PN_XNUM) {
2086 shdr4extnum = kmalloc(sizeof(*shdr4extnum), GFP_KERNEL);
2089 fill_extnum_info(&elf, shdr4extnum, e_shoff, segs);
2094 if (!dump_emit(cprm, &elf, sizeof(elf)))
2097 if (!dump_emit(cprm, phdr4note, sizeof(*phdr4note)))
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;
2105 phdr.p_type = PT_LOAD;
2106 phdr.p_offset = offset;
2107 phdr.p_vaddr = meta->start;
2109 phdr.p_filesz = meta->dump_size;
2110 phdr.p_memsz = meta->end - meta->start;
2111 offset += phdr.p_filesz;
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;
2121 if (!dump_emit(cprm, &phdr, sizeof(phdr)))
2125 if (!elf_core_write_extra_phdrs(cprm, offset))
2128 /* write out the notes section */
2129 if (!write_note_info(&info, cprm))
2132 /* For cell spufs */
2133 if (elf_coredump_extra_notes_write(cprm))
2137 dump_skip_to(cprm, dataoff);
2139 for (i = 0; i < cprm->vma_count; i++) {
2140 struct core_vma_metadata *meta = cprm->vma_meta + i;
2142 if (!dump_user_range(cprm, meta->start, meta->dump_size))
2146 if (!elf_core_write_extra_data(cprm))
2149 if (e_phnum == PN_XNUM) {
2150 if (!dump_emit(cprm, shdr4extnum, sizeof(*shdr4extnum)))
2155 free_note_info(&info);
2161 #endif /* CONFIG_ELF_CORE */
2163 static int __init init_elf_binfmt(void)
2165 register_binfmt(&elf_format);
2169 static void __exit exit_elf_binfmt(void)
2171 /* Remove the COFF and ELF loaders. */
2172 unregister_binfmt(&elf_format);
2175 core_initcall(init_elf_binfmt);
2176 module_exit(exit_elf_binfmt);
2177 MODULE_LICENSE("GPL");
2179 #ifdef CONFIG_BINFMT_ELF_KUNIT_TEST
2180 #include "binfmt_elf_test.c"