]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
s390: opt into HAVE_COPY_THREAD_TLS
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Mon, 20 Feb 2017 08:38:42 +0000 (09:38 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 23 Feb 2017 09:06:38 +0000 (10:06 +0100)
This the s390 version of commit c1bd55f922a2d ("x86: opt into
HAVE_COPY_THREAD_TLS, for both 32-bit and 64-bit").

Simply use the tls system call argument instead of extracting the tls
argument by magic from the pt_regs structure.

See commit 3033f14ab78c3 ("clone: support passing tls argument via C
rather than pt_regs magic") for more background.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/Kconfig
arch/s390/kernel/process.c

index 2ef031bee7ab38324c2a426d2d7719d227d7dfc1..7deadbb8a9fed9ca29ae40be8032f1fa280a769e 100644 (file)
@@ -134,6 +134,7 @@ 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_API_DEBUG
        select HAVE_DMA_CONTIGUOUS
index a49dc2bdeb17db67d597742d9a6bd4fc976e4dbf..54281660582cb1d70f49ac432afe3a8af3d6e5ef 100644 (file)
@@ -100,8 +100,8 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
        return 0;
 }
 
-int copy_thread(unsigned long clone_flags, unsigned long new_stackp,
-               unsigned long arg, struct task_struct *p)
+int copy_thread_tls(unsigned long clone_flags, unsigned long new_stackp,
+                   unsigned long arg, struct task_struct *p, unsigned long tls)
 {
        struct fake_frame
        {
@@ -156,7 +156,6 @@ int copy_thread(unsigned long clone_flags, unsigned long new_stackp,
 
        /* Set a new TLS ?  */
        if (clone_flags & CLONE_SETTLS) {
-               unsigned long tls = frame->childregs.gprs[6];
                if (is_compat_task()) {
                        p->thread.acrs[0] = (unsigned int)tls;
                } else {