]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
arch: remove HAVE_COPY_THREAD_TLS
authorChristian Brauner <christian.brauner@ubuntu.com>
Sun, 24 May 2020 21:34:20 +0000 (23:34 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Sat, 4 Jul 2020 21:41:37 +0000 (23:41 +0200)
All architectures support copy_thread_tls() now, so remove the legacy
copy_thread() function and the HAVE_COPY_THREAD_TLS config option. Everyone
uses the same process creation calling convention based on
copy_thread_tls() and struct kernel_clone_args. This will make it easier to
maintain the core process creation code under kernel/, simplifies the
callpaths and makes the identical for all architectures.

Cc: linux-arch@vger.kernel.org
Acked-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Acked-by: Greentime Hu <green.hu@gmail.com>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
28 files changed:
arch/Kconfig
arch/alpha/Kconfig
arch/arc/Kconfig
arch/arm/Kconfig
arch/arm64/Kconfig
arch/c6x/Kconfig
arch/csky/Kconfig
arch/h8300/Kconfig
arch/hexagon/Kconfig
arch/ia64/Kconfig
arch/m68k/Kconfig
arch/microblaze/Kconfig
arch/mips/Kconfig
arch/nds32/Kconfig
arch/nios2/Kconfig
arch/openrisc/Kconfig
arch/parisc/Kconfig
arch/powerpc/Kconfig
arch/riscv/Kconfig
arch/s390/Kconfig
arch/sh/Kconfig
arch/sparc/Kconfig
arch/um/Kconfig
arch/unicore32/Kconfig
arch/x86/Kconfig
arch/xtensa/Kconfig
include/linux/sched/task.h
kernel/fork.c

index 8cc35dc556c72e9cfba7d92dce292d9897f36a12..943aac2f3ebef42ff2dbf72ed3e7cfc3c5d51287 100644 (file)
@@ -754,13 +754,6 @@ config ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
        depends on MMU
        select ARCH_HAS_ELF_RANDOMIZE
 
-config HAVE_COPY_THREAD_TLS
-       bool
-       help
-         Architecture provides copy_thread_tls to accept tls argument via
-         normal C parameter passing, rather than extracting the syscall
-         argument from pt_regs.
-
 config HAVE_STACK_VALIDATION
        bool
        help
index b01515c6b2ed9a2c3f70a1153de63cb77ee675bf..10862c5a8c7682661bb50c8131c340b8e703398a 100644 (file)
@@ -38,7 +38,6 @@ config ALPHA
        select OLD_SIGSUSPEND
        select CPU_NO_EFFICIENT_FFS if !ALPHA_EV67
        select MMU_GATHER_NO_RANGE
-       select HAVE_COPY_THREAD_TLS
        help
          The Alpha is a 64-bit general-purpose processor designed and
          marketed by the Digital Equipment Corporation of blessed memory,
index fddc700297278bf4c0c69033eb7ce9d51497d141..1fa0b98ed9ce3d3da89f69cf98962778065325da 100644 (file)
@@ -29,7 +29,6 @@ config ARC
        select GENERIC_SMP_IDLE_THREAD
        select HAVE_ARCH_KGDB
        select HAVE_ARCH_TRACEHOOK
-       select HAVE_COPY_THREAD_TLS
        select HAVE_DEBUG_STACKOVERFLOW
        select HAVE_DEBUG_KMEMLEAK
        select HAVE_FUTEX_CMPXCHG if FUTEX
index 2ac74904a3ce586aa003c56752c85bb613ef6f53..445b5ed693f08a690cd2979a54f6cf7d1c989145 100644 (file)
@@ -72,7 +72,6 @@ config ARM
        select HAVE_ARM_SMCCC if CPU_V7
        select HAVE_EBPF_JIT if !CPU_ENDIAN_BE32
        select HAVE_CONTEXT_TRACKING
-       select HAVE_COPY_THREAD_TLS
        select HAVE_C_RECORDMCOUNT
        select HAVE_DEBUG_KMEMLEAK if !XIP_KERNEL
        select HAVE_DMA_CONTIGUOUS if MMU
index a4a094bedcb2857d2336f3193523009009a58cce..de93e965727d6dcd24f16485fd529500eaad73ba 100644 (file)
@@ -148,7 +148,6 @@ config ARM64
        select HAVE_CMPXCHG_DOUBLE
        select HAVE_CMPXCHG_LOCAL
        select HAVE_CONTEXT_TRACKING
-       select HAVE_COPY_THREAD_TLS
        select HAVE_DEBUG_BUGVERBOSE
        select HAVE_DEBUG_KMEMLEAK
        select HAVE_DMA_CONTIGUOUS
index 9cde76a5928e72f7e0d8ce10cc5b0ba341ab9646..6444ebfd06a6656563db32286f87c00eaf11e68c 100644 (file)
@@ -22,7 +22,6 @@ config C6X
        select GENERIC_CLOCKEVENTS
        select MODULES_USE_ELF_RELA
        select MMU_GATHER_NO_RANGE if MMU
-       select HAVE_COPY_THREAD_TLS
 
 config MMU
        def_bool n
index bd31ab12f77de93afe292c9f839169a74d2e5e71..902f1142d55073a628b51282f5187912afb30cec 100644 (file)
@@ -38,7 +38,6 @@ config CSKY
        select GX6605S_TIMER if CPU_CK610
        select HAVE_ARCH_TRACEHOOK
        select HAVE_ARCH_AUDITSYSCALL
-       select HAVE_COPY_THREAD_TLS
        select HAVE_DEBUG_BUGVERBOSE
        select HAVE_DYNAMIC_FTRACE
        select HAVE_DYNAMIC_FTRACE_WITH_REGS
index de0eb417a0b9c862ea19406fd05a0fc748ef7df6..d11666d538fea8816df6aa61978e6aa6d07acc33 100644 (file)
@@ -26,7 +26,6 @@ config H8300
        select HAVE_ARCH_HASH
        select CPU_NO_EFFICIENT_FFS
        select UACCESS_MEMCPY
-       select HAVE_COPY_THREAD_TLS
 
 config CPU_BIG_ENDIAN
        def_bool y
index 19bc2f2ee331c2d8e1b79d8140ed07ed18bc879e..667cfc511cf99972b6e0e9d75bee22b7d534d823 100644 (file)
@@ -31,7 +31,6 @@ config HEXAGON
        select GENERIC_CLOCKEVENTS_BROADCAST
        select MODULES_USE_ELF_RELA
        select GENERIC_CPU_DEVICES
-       select HAVE_COPY_THREAD_TLS
        help
          Qualcomm Hexagon is a processor architecture designed for high
          performance and low power across a wide variety of applications.
index 1b6034b89a04ae3136ec8e3b3b4dfb913e8d867c..1fa2fe2ef053f8803da946a9cbf0c83185fbb949 100644 (file)
@@ -55,7 +55,6 @@ config IA64
        select HAVE_ARCH_AUDITSYSCALL
        select NEED_DMA_MAP_STATE
        select NEED_SG_DMA_LENGTH
-       select HAVE_COPY_THREAD_TLS
        select NUMA if !FLATMEM
        default y
        help
index 6ad6cdac74b3dc420b4126c194c58a20d6d2d601..6663f1741798e83f53c58641f13ca2f9ec8b544e 100644 (file)
@@ -14,7 +14,6 @@ config M68K
        select HAVE_AOUT if MMU
        select HAVE_ASM_MODVERSIONS
        select HAVE_DEBUG_BUGVERBOSE
-       select HAVE_COPY_THREAD_TLS
        select GENERIC_IRQ_SHOW
        select GENERIC_ATOMIC64
        select HAVE_UID16
index e3a211a418806a063bbe7889688b31c5745e19f7..d262ac0c8714bd804b8a43e61d05e939092592d6 100644 (file)
@@ -46,7 +46,6 @@ config MICROBLAZE
        select CPU_NO_EFFICIENT_FFS
        select MMU_GATHER_NO_RANGE if MMU
        select SPARSE_IRQ
-       select HAVE_COPY_THREAD_TLS
 
 # Endianness selection
 choice
index 6fee1a133e9d6a938351c5eff65bc58c9bcd02bb..ca92c3ed2dc5a05e2b25504b8f72c1e57d2b0283 100644 (file)
@@ -51,7 +51,6 @@ config MIPS
        select HAVE_CBPF_JIT if !64BIT && !CPU_MICROMIPS
        select HAVE_CONTEXT_TRACKING
        select HAVE_TIF_NOHZ
-       select HAVE_COPY_THREAD_TLS
        select HAVE_C_RECORDMCOUNT
        select HAVE_DEBUG_KMEMLEAK
        select HAVE_DEBUG_STACKOVERFLOW
index 7b6eaca81cce861505e86760d7f58bb897ba3b17..e30298e99e1bdf00a1673eb124c5717523039c3e 100644 (file)
@@ -48,7 +48,6 @@ config NDS32
        select HAVE_FUNCTION_GRAPH_TRACER
        select HAVE_FTRACE_MCOUNT_RECORD
        select HAVE_DYNAMIC_FTRACE
-       select HAVE_COPY_THREAD_TLS
        help
          Andes(nds32) Linux support.
 
index f9a05957a8837323acc8b713ee3e9d7df8e54869..c6645141bb2a8885ba9ef0f5dd887570a4974968 100644 (file)
@@ -27,7 +27,6 @@ config NIOS2
        select USB_ARCH_HAS_HCD if USB_SUPPORT
        select CPU_NO_EFFICIENT_FFS
        select MMU_GATHER_NO_RANGE if MMU
-       select HAVE_COPY_THREAD_TLS
 
 config GENERIC_CSUM
        def_bool y
index 8588996165ae860b5e7d195486b099060261674e..7e94fe37cb2fdf341cee2461cd51ce3cf3e14905 100644 (file)
@@ -16,7 +16,6 @@ config OPENRISC
        select HANDLE_DOMAIN_IRQ
        select GPIOLIB
        select HAVE_ARCH_TRACEHOOK
-       select HAVE_COPY_THREAD_TLS
        select SPARSE_IRQ
        select GENERIC_IRQ_CHIP
        select GENERIC_IRQ_PROBE
index 8e4c3708773d0897f8934126cd39fc0c28d3b579..2667eeb6c6f121d54280fc5e578cdef70f525898 100644 (file)
@@ -62,7 +62,6 @@ config PARISC
        select HAVE_FTRACE_MCOUNT_RECORD if HAVE_DYNAMIC_FTRACE
        select HAVE_KPROBES_ON_FTRACE
        select HAVE_DYNAMIC_FTRACE_WITH_REGS
-       select HAVE_COPY_THREAD_TLS
 
        help
          The PA-RISC microprocessor is designed by Hewlett-Packard and used
index 9fa23eb320ff5acd856fce7f31589fb09a17027e..3b262d87e9c473dae448c6ddc7b9db962475d32d 100644 (file)
@@ -186,7 +186,6 @@ config PPC
        select HAVE_STACKPROTECTOR              if PPC32 && $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r2)
        select HAVE_CONTEXT_TRACKING            if PPC64
        select HAVE_TIF_NOHZ                    if PPC64
-       select HAVE_COPY_THREAD_TLS
        select HAVE_DEBUG_KMEMLEAK
        select HAVE_DEBUG_STACKOVERFLOW
        select HAVE_DYNAMIC_FTRACE
index 128192e14ff2a83e6b29490bf4b6d78feaabd660..f6a3a2bea3d892fba4957d061952effdf6d652f3 100644 (file)
@@ -52,7 +52,6 @@ config RISCV
        select HAVE_ARCH_SECCOMP_FILTER
        select HAVE_ARCH_TRACEHOOK
        select HAVE_ASM_MODVERSIONS
-       select HAVE_COPY_THREAD_TLS
        select HAVE_DMA_CONTIGUOUS if MMU
        select HAVE_EBPF_JIT if MMU
        select HAVE_FUTEX_CMPXCHG if FUTEX
index c7d7ede6300c59d3fa5299895f84fb1e167d154e..959969759453a989e54909e0e8d62e58724dcf9a 100644 (file)
@@ -136,7 +136,6 @@ config S390
        select HAVE_EBPF_JIT if PACK_STACK && HAVE_MARCH_Z196_FEATURES
        select HAVE_CMPXCHG_DOUBLE
        select HAVE_CMPXCHG_LOCAL
-       select HAVE_COPY_THREAD_TLS
        select HAVE_DEBUG_KMEMLEAK
        select HAVE_DMA_CONTIGUOUS
        select HAVE_DYNAMIC_FTRACE
index e10118d61ce77083894b2657ad8c9850698300ff..9fc2b010e938c94a8a8d7e2e572cdd087128da83 100644 (file)
@@ -70,7 +70,6 @@ config SUPERH
        select ARCH_HIBERNATION_POSSIBLE if MMU
        select SPARSE_IRQ
        select HAVE_STACKPROTECTOR
-       select HAVE_COPY_THREAD_TLS
        help
          The SuperH is a RISC processor targeted for use in embedded systems
          and consumer electronics; it was also used in the Sega Dreamcast
index 66213c0cb55729a57101e7e7f2b0d67ed08f4d12..5bf2dc163540fc4af8eb774e6263c2293b76f343 100644 (file)
@@ -48,7 +48,6 @@ config SPARC
        select LOCKDEP_SMALL if LOCKDEP
        select NEED_DMA_MAP_STATE
        select NEED_SG_DMA_LENGTH
-       select HAVE_COPY_THREAD_TLS
 
 config SPARC32
        def_bool !64BIT
index 9318dc6d1a0ceee2fb12cd8d72b7a0f8238a92b2..ef69be17ff70376e9d2004d306b9ba8b6e3f2a75 100644 (file)
@@ -14,7 +14,6 @@ config UML
        select HAVE_FUTEX_CMPXCHG if FUTEX
        select HAVE_DEBUG_KMEMLEAK
        select HAVE_DEBUG_BUGVERBOSE
-       select HAVE_COPY_THREAD_TLS
        select GENERIC_IRQ_SHOW
        select GENERIC_CPU_DEVICES
        select GENERIC_CLOCKEVENTS
index 01451cf500d27bc51af0fca2e9123283894da93b..11ba1839d198e346970a915964b95a6702abea18 100644 (file)
@@ -22,7 +22,6 @@ config UNICORE32
        select MODULES_USE_ELF_REL
        select NEED_DMA_MAP_STATE
        select MMU_GATHER_NO_RANGE if MMU
-       select HAVE_COPY_THREAD_TLS
        help
          UniCore-32 is 32-bit Instruction Set Architecture,
          including a series of low-power-consumption RISC chip
index 6a0cc524882dbee2a277eb7e88700968344d5728..214b8bf39bbeb9be468dc3f315325c0bb33f5126 100644 (file)
@@ -161,7 +161,6 @@ config X86
        select HAVE_CMPXCHG_DOUBLE
        select HAVE_CMPXCHG_LOCAL
        select HAVE_CONTEXT_TRACKING            if X86_64
-       select HAVE_COPY_THREAD_TLS
        select HAVE_C_RECORDMCOUNT
        select HAVE_DEBUG_KMEMLEAK
        select HAVE_DMA_CONTIGUOUS
index 3a9f1e80394a01c1b16edad07fe165123f48646f..b71ba910d92f79d5b68645700b214e803d9b958b 100644 (file)
@@ -24,7 +24,6 @@ config XTENSA
        select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
        select HAVE_ARCH_KASAN if MMU && !XIP_KERNEL
        select HAVE_ARCH_TRACEHOOK
-       select HAVE_COPY_THREAD_TLS
        select HAVE_DEBUG_KMEMLEAK
        select HAVE_DMA_CONTIGUOUS
        select HAVE_EXIT_THREAD
index 9f03c44941fb12b520fd1bb233ef28cb7aab7418..77cbe14c30344a58191ef605171d0743ccacfc87 100644 (file)
@@ -65,22 +65,9 @@ extern void fork_init(void);
 
 extern void release_task(struct task_struct * p);
 
-#ifdef CONFIG_HAVE_COPY_THREAD_TLS
 extern int copy_thread_tls(unsigned long, unsigned long, unsigned long,
                        struct task_struct *, unsigned long);
-#else
-extern int copy_thread(unsigned long, unsigned long, unsigned long,
-                       struct task_struct *);
-
-/* Architectures that haven't opted into copy_thread_tls get the tls argument
- * via pt_regs, so ignore the tls argument passed via C. */
-static inline int copy_thread_tls(
-               unsigned long clone_flags, unsigned long sp, unsigned long arg,
-               struct task_struct *p, unsigned long tls)
-{
-       return copy_thread(clone_flags, sp, arg, p);
-}
-#endif
+
 extern void flush_thread(void);
 
 #ifdef CONFIG_HAVE_EXIT_THREAD
index 0fd7eb1b38f9b3855fcbb776a2353ca25f1ed5f0..8e52e16a1b5e68329b3673d87769361b2a9d0297 100644 (file)
@@ -2577,15 +2577,6 @@ SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp,
 
 #ifdef __ARCH_WANT_SYS_CLONE3
 
-/*
- * copy_thread implementations handle CLONE_SETTLS by reading the TLS value from
- * the registers containing the syscall arguments for clone. This doesn't work
- * with clone3 since the TLS value is passed in clone_args instead.
- */
-#ifndef CONFIG_HAVE_COPY_THREAD_TLS
-#error clone3 requires copy_thread_tls support in arch
-#endif
-
 noinline static int copy_clone_args_from_user(struct kernel_clone_args *kargs,
                                              struct clone_args __user *uargs,
                                              size_t usize)