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