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