]> Git Repo - linux.git/commitdiff
Merge branch 'work.elf-compat' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
authorLinus Torvalds <[email protected]>
Sun, 21 Feb 2021 17:29:23 +0000 (09:29 -0800)
committerLinus Torvalds <[email protected]>
Sun, 21 Feb 2021 17:29:23 +0000 (09:29 -0800)
Pull ELF compat updates from Al Viro:
 "Sanitizing ELF compat support, especially for triarch architectures:

   - X32 handling cleaned up

   - MIPS64 uses compat_binfmt_elf.c both for O32 and N32 now

   - Kconfig side of things regularized

  Eventually I hope to have compat_binfmt_elf.c killed, with both native
  and compat built from fs/binfmt_elf.c, with -DELF_BITS={64,32} passed
  by kbuild, but that's a separate story - not included here"

* 'work.elf-compat' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
  get rid of COMPAT_ELF_EXEC_PAGESIZE
  compat_binfmt_elf: don't bother with undef of ELF_ARCH
  Kconfig: regularize selection of CONFIG_BINFMT_ELF
  mips compat: switch to compat_binfmt_elf.c
  mips: don't bother with ELF_CORE_EFLAGS
  mips compat: don't bother with ELF_ET_DYN_BASE
  mips: KVM_GUEST makes no sense for 64bit builds...
  mips: kill unused definitions in binfmt_elf[on]32.c
  mips binfmt_elf*32.c: use elfcore-compat.h
  x32: make X32, !IA32_EMULATION setups able to execute x32 binaries
  [amd64] clean PRSTATUS_SIZE/SET_PR_FPVALID up properly
  elf_prstatus: collect the common part (everything before pr_reg) into a struct
  binfmt_elf: partially sanitize PRSTATUS_SIZE and SET_PR_FPVALID

1  2 
arch/Kconfig
arch/arm64/Kconfig
arch/parisc/Kconfig
arch/s390/Kconfig
arch/x86/Kconfig
fs/Kconfig.binfmt
kernel/kexec_core.c

diff --combined arch/Kconfig
index 24862d15f3a36936fae1036821cf2b948208da59,a17ced73b23c2a1ae1345a839d523c1b4a9be61c..b8bbfd3c66b8608d6f2d57d10538d68fa564ef26
@@@ -1105,12 -1105,9 +1105,15 @@@ config HAVE_ARCH_PFN_VALI
  config ARCH_SUPPORTS_DEBUG_PAGEALLOC
        bool
  
 +config ARCH_SPLIT_ARG64
 +      bool
 +      help
 +         If a 32-bit architecture requires 64-bit arguments to be split into
 +         pairs of 32-bit arguments, select this option.
 +
+ config ARCH_HAS_ELFCORE_COMPAT
+       bool
  source "kernel/gcov/Kconfig"
  
  source "scripts/gcc-plugins/Kconfig"
diff --combined arch/arm64/Kconfig
index f39568b28ec1c47a5abbe2db43be5529111291fa,ed48fd42ab335a1a13432f13efd1ec063a613d67..52bc8f6206b790ef784f43aa9493184da568a22b
@@@ -174,6 -174,8 +174,6 @@@ config ARM6
        select HAVE_NMI
        select HAVE_PATA_PLATFORM
        select HAVE_PERF_EVENTS
 -      select HAVE_PERF_EVENTS_NMI if ARM64_PSEUDO_NMI && HW_PERF_EVENTS
 -      select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI
        select HAVE_PERF_REGS
        select HAVE_PERF_USER_STACK_DUMP
        select HAVE_REGS_AND_STACK_ACCESS_API
@@@ -1213,7 -1215,6 +1213,6 @@@ config ARM64_TAGGED_ADDR_AB
  menuconfig COMPAT
        bool "Kernel support for 32-bit EL0"
        depends on ARM64_4K_PAGES || EXPERT
-       select COMPAT_BINFMT_ELF if BINFMT_ELF
        select HAVE_UID16
        select OLD_SIGSUSPEND3
        select COMPAT_OLD_SIGACTION
diff --combined arch/parisc/Kconfig
index 278462186ac4759c43c704d6d07d5f6189a663d9,26daf57b9df62f352104bf73f5064d5d60569edc..b09d6923f15673b5d36a6bbd512cb140d7edf2b2
@@@ -202,8 -202,9 +202,8 @@@ config PREFETC
        depends on PA8X00 || PA7200
  
  config MLONGCALLS
 -      bool "Enable the -mlong-calls compiler option for big kernels"
 -      default y if !MODULES || UBSAN || FTRACE
 -      default n
 +      def_bool y if !MODULES || UBSAN || FTRACE
 +      bool "Enable the -mlong-calls compiler option for big kernels" if MODULES && !UBSAN && !FTRACE
        depends on PA8X00
        help
          If you configure the kernel to include many drivers built-in instead
@@@ -335,7 -336,6 +335,6 @@@ source "kernel/Kconfig.hz
  config COMPAT
        def_bool y
        depends on 64BIT
-       select COMPAT_BINFMT_ELF if BINFMT_ELF
  
  config SYSVIPC_COMPAT
        def_bool y
diff --combined arch/s390/Kconfig
index c72874f09741c7c3de56becaffdaf1c8e3e6204c,73b61fe7231e559a7d26260f478e3d27bdd9dccd..73483614b66bd2f6bf65716c2f9c05aeaff11a8a
@@@ -54,23 -54,17 +54,23 @@@ config KASAN_SHADOW_OFFSE
  
  config S390
        def_bool y
 +      #
 +      # Note: keep this list sorted alphabetically
 +      #
 +      imply IMA_SECURE_AND_OR_TRUSTED_BOOT
        select ARCH_BINFMT_ELF_STATE
        select ARCH_HAS_DEBUG_VM_PGTABLE
        select ARCH_HAS_DEBUG_WX
        select ARCH_HAS_DEVMEM_IS_ALLOWED
        select ARCH_HAS_ELF_RANDOMIZE
 +      select ARCH_HAS_FORCE_DMA_UNENCRYPTED
        select ARCH_HAS_FORTIFY_SOURCE
        select ARCH_HAS_GCOV_PROFILE_ALL
        select ARCH_HAS_GIGANTIC_PAGE
        select ARCH_HAS_KCOV
        select ARCH_HAS_MEM_ENCRYPT
        select ARCH_HAS_PTE_SPECIAL
 +      select ARCH_HAS_SCALED_CPUTIME
        select ARCH_HAS_SET_MEMORY
        select ARCH_HAS_STRICT_KERNEL_RWX
        select ARCH_HAS_STRICT_MODULE_RWX
        select ARCH_WANT_IPC_PARSE_VERSION
        select BUILDTIME_TABLE_SORT
        select CLONE_BACKWARDS2
 +      select CPU_NO_EFFICIENT_FFS if !HAVE_MARCH_Z9_109_FEATURES
        select DMA_OPS if PCI
        select DYNAMIC_FTRACE if FUNCTION_TRACER
 +      select GENERIC_ALLOCATOR
        select GENERIC_CPU_AUTOPROBE
        select GENERIC_CPU_VULNERABILITIES
        select GENERIC_FIND_FIRST_BIT
        select HAVE_ARCH_JUMP_LABEL_RELATIVE
        select HAVE_ARCH_KASAN
        select HAVE_ARCH_KASAN_VMALLOC
 -      select CPU_NO_EFFICIENT_FFS if !HAVE_MARCH_Z9_109_FEATURES
        select HAVE_ARCH_SECCOMP_FILTER
        select HAVE_ARCH_SOFT_DIRTY
        select HAVE_ARCH_TRACEHOOK
        select HAVE_ARCH_TRANSPARENT_HUGEPAGE
        select HAVE_ARCH_VMAP_STACK
        select HAVE_ASM_MODVERSIONS
 -      select HAVE_EBPF_JIT if PACK_STACK && HAVE_MARCH_Z196_FEATURES
        select HAVE_CMPXCHG_DOUBLE
        select HAVE_CMPXCHG_LOCAL
        select HAVE_DEBUG_KMEMLEAK
        select HAVE_DMA_CONTIGUOUS
        select HAVE_DYNAMIC_FTRACE
        select HAVE_DYNAMIC_FTRACE_WITH_REGS
 -      select HAVE_FAST_GUP
 +      select HAVE_EBPF_JIT if PACK_STACK && HAVE_MARCH_Z196_FEATURES
        select HAVE_EFFICIENT_UNALIGNED_ACCESS
 +      select HAVE_FAST_GUP
        select HAVE_FENTRY
        select HAVE_FTRACE_MCOUNT_RECORD
        select HAVE_FUNCTION_ERROR_INJECTION
        select HAVE_KRETPROBES
        select HAVE_KVM
        select HAVE_LIVEPATCH
 -      select HAVE_PERF_REGS
 -      select HAVE_PERF_USER_STACK_DUMP
        select HAVE_MEMBLOCK_PHYS_MAP
 -      select MMU_GATHER_NO_GATHER
        select HAVE_MOD_ARCH_SPECIFIC
 +      select HAVE_NMI
        select HAVE_NOP_MCOUNT
        select HAVE_OPROFILE
        select HAVE_PCI
        select HAVE_PERF_EVENTS
 -      select MMU_GATHER_RCU_TABLE_FREE
 +      select HAVE_PERF_REGS
 +      select HAVE_PERF_USER_STACK_DUMP
        select HAVE_REGS_AND_STACK_ACCESS_API
        select HAVE_RELIABLE_STACKTRACE
        select HAVE_RSEQ
        select HAVE_VIRT_CPU_ACCOUNTING_IDLE
        select IOMMU_HELPER             if PCI
        select IOMMU_SUPPORT            if PCI
 +      select MMU_GATHER_NO_GATHER
 +      select MMU_GATHER_RCU_TABLE_FREE
        select MODULES_USE_ELF_RELA
        select NEED_DMA_MAP_STATE       if PCI
        select NEED_SG_DMA_LENGTH       if PCI
        select PCI_MSI                  if PCI
        select PCI_MSI_ARCH_FALLBACKS   if PCI_MSI
        select SPARSE_IRQ
 +      select SWIOTLB
        select SYSCTL_EXCEPTION_TRACE
        select THREAD_INFO_IN_TASK
        select TTY
        select VIRT_CPU_ACCOUNTING
 -      select ARCH_HAS_SCALED_CPUTIME
 -      select HAVE_NMI
 -      select ARCH_HAS_FORCE_DMA_UNENCRYPTED
 -      select SWIOTLB
 -      select GENERIC_ALLOCATOR
 -      imply IMA_SECURE_AND_OR_TRUSTED_BOOT
 -
 +      # Note: keep the above list sorted alphabetically
  
  config SCHED_OMIT_FRAME_POINTER
        def_bool y
@@@ -426,7 -423,6 +426,6 @@@ config 64BI
  config COMPAT
        def_bool y
        prompt "Kernel support for 31 bit emulation"
-       select COMPAT_BINFMT_ELF if BINFMT_ELF
        select ARCH_WANT_OLD_COMPAT_IPC
        select COMPAT_OLD_SIGACTION
        select HAVE_UID16
diff --combined arch/x86/Kconfig
index 3d498caca1ea0c66cb1d90fe9a68f3d4d4c0b71a,6d130d1c440bd95b43ec6386365d093f419d8d23..31d94448b4e1843cc7b499784f015f368fc07f7d
@@@ -19,7 -19,6 +19,7 @@@ config X86_3
        select KMAP_LOCAL
        select MODULES_USE_ELF_REL
        select OLD_SIGACTION
 +      select ARCH_SPLIT_ARG64
  
  config X86_64
        def_bool y
@@@ -32,6 -31,7 +32,7 @@@
        select MODULES_USE_ELF_RELA
        select NEED_DMA_MAP_STATE
        select SWIOTLB
+       select ARCH_HAS_ELFCORE_COMPAT
  
  config FORCE_DYNAMIC_FTRACE
        def_bool y
@@@ -890,7 -890,7 +891,7 @@@ config HPET_TIME
  
  config HPET_EMULATE_RTC
        def_bool y
 -      depends on HPET_TIMER && (RTC=y || RTC=m || RTC_DRV_CMOS=m || RTC_DRV_CMOS=y)
 +      depends on HPET_TIMER && (RTC_DRV_CMOS=m || RTC_DRV_CMOS=y)
  
  config APB_TIMER
        def_bool y if X86_INTEL_MID
@@@ -1158,6 -1158,10 +1159,6 @@@ config X86_MCE_INJEC
          If you don't know what a machine check is and you don't do kernel
          QA it is safe to say n.
  
 -config X86_THERMAL_VECTOR
 -      def_bool y
 -      depends on X86_MCE_INTEL
 -
  source "arch/x86/events/Kconfig"
  
  config X86_LEGACY_VM86
@@@ -2860,7 -2864,6 +2861,6 @@@ config IA32_EMULATIO
        depends on X86_64
        select ARCH_WANT_OLD_COMPAT_IPC
        select BINFMT_ELF
-       select COMPAT_BINFMT_ELF
        select COMPAT_OLD_SIGACTION
        help
          Include code to run legacy 32-bit programs under a
diff --combined fs/Kconfig.binfmt
index 647439c2c05ae217e2f0cac5cec8d50b8469f294,b32f5df68ae9dcbff0069a46e2118a543a29ff97..c6f1c8c1934e3e2b5b075f79b8a4069416dbe97b
@@@ -29,7 -29,7 +29,7 @@@ config BINFMT_EL
          latest version).
  
  config COMPAT_BINFMT_ELF
-       bool
+       def_bool y
        depends on COMPAT && BINFMT_ELF
        select ELFCORE
  
@@@ -45,7 -45,7 +45,7 @@@ config ARCH_USE_GNU_PROPERT
  config BINFMT_ELF_FDPIC
        bool "Kernel support for FDPIC ELF binaries"
        default y if !BINFMT_ELF
 -      depends on (ARM || (SUPERH && !MMU) || C6X)
 +      depends on (ARM || (SUPERH && !MMU))
        select ELFCORE
        help
          ELF FDPIC binaries are based on ELF, but allow the individual load
diff --combined kernel/kexec_core.c
index aa919585c24b4adb914433fcfdd06999b3a212e6,80905e5aa8aedccd016fbe7de2f549e4838a5382..a0b6780740c8a24650b3d12c6abe79e70c2e0f95
@@@ -1076,7 -1076,7 +1076,7 @@@ void crash_save_cpu(struct pt_regs *reg
        if (!buf)
                return;
        memset(&prstatus, 0, sizeof(prstatus));
-       prstatus.pr_pid = current->pid;
+       prstatus.common.pr_pid = current->pid;
        elf_core_copy_kernel_regs(&prstatus.pr_reg, regs);
        buf = append_elf_note(buf, KEXEC_CORE_NOTE_NAME, NT_PRSTATUS,
                              &prstatus, sizeof(prstatus));
@@@ -1134,6 -1134,7 +1134,6 @@@ int kernel_kexec(void
  
  #ifdef CONFIG_KEXEC_JUMP
        if (kexec_image->preserve_context) {
 -              lock_system_sleep();
                pm_prepare_console();
                error = freeze_processes();
                if (error) {
                thaw_processes();
   Restore_console:
                pm_restore_console();
 -              unlock_system_sleep();
        }
  #endif
  
This page took 0.115117 seconds and 4 git commands to generate.