From: Amanieu d'Antras <amanieu@gmail.com> To: linux-kernel@vger.kernel.org Cc: Christian Brauner <christian@brauner.io>, stable@vger.kernel.org, Amanieu d'Antras <amanieu@gmail.com>, linux-arm-kernel@lists.infradead.org Subject: [PATCH 2/7] arm64: Implement copy_thread_tls Date: Thu, 2 Jan 2020 18:24:08 +0100 [thread overview] Message-ID: <20200102172413.654385-3-amanieu@gmail.com> (raw) In-Reply-To: <20200102172413.654385-1-amanieu@gmail.com> This is required for clone3 which passes the TLS value through a struct rather than a register. Signed-off-by: Amanieu d'Antras <amanieu@gmail.com> Cc: linux-arm-kernel@lists.infradead.org Cc: <stable@vger.kernel.org> # 5.3.x --- arch/arm64/Kconfig | 1 + arch/arm64/kernel/process.c | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index b1b4476ddb83..e688dfad0b72 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -138,6 +138,7 @@ 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 diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c index 71f788cd2b18..d54586d5b031 100644 --- a/arch/arm64/kernel/process.c +++ b/arch/arm64/kernel/process.c @@ -360,8 +360,8 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) asmlinkage void ret_from_fork(void) asm("ret_from_fork"); -int copy_thread(unsigned long clone_flags, unsigned long stack_start, - unsigned long stk_sz, struct task_struct *p) +int copy_thread_tls(unsigned long clone_flags, unsigned long stack_start, + unsigned long stk_sz, struct task_struct *p, unsigned long tls) { struct pt_regs *childregs = task_pt_regs(p); @@ -394,11 +394,11 @@ int copy_thread(unsigned long clone_flags, unsigned long stack_start, } /* - * If a TLS pointer was passed to clone (4th argument), use it - * for the new thread. + * If a TLS pointer was passed to clone, use it for the new + * thread. */ if (clone_flags & CLONE_SETTLS) - p->thread.uw.tp_value = childregs->regs[3]; + p->thread.uw.tp_value = tls; } else { memset(childregs, 0, sizeof(struct pt_regs)); childregs->pstate = PSR_MODE_EL1h; -- 2.24.1
WARNING: multiple messages have this Message-ID (diff)
From: Amanieu d'Antras <amanieu@gmail.com> To: linux-kernel@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, Amanieu d'Antras <amanieu@gmail.com>, stable@vger.kernel.org, Christian Brauner <christian@brauner.io> Subject: [PATCH 2/7] arm64: Implement copy_thread_tls Date: Thu, 2 Jan 2020 18:24:08 +0100 [thread overview] Message-ID: <20200102172413.654385-3-amanieu@gmail.com> (raw) In-Reply-To: <20200102172413.654385-1-amanieu@gmail.com> This is required for clone3 which passes the TLS value through a struct rather than a register. Signed-off-by: Amanieu d'Antras <amanieu@gmail.com> Cc: linux-arm-kernel@lists.infradead.org Cc: <stable@vger.kernel.org> # 5.3.x --- arch/arm64/Kconfig | 1 + arch/arm64/kernel/process.c | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index b1b4476ddb83..e688dfad0b72 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -138,6 +138,7 @@ 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 diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c index 71f788cd2b18..d54586d5b031 100644 --- a/arch/arm64/kernel/process.c +++ b/arch/arm64/kernel/process.c @@ -360,8 +360,8 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) asmlinkage void ret_from_fork(void) asm("ret_from_fork"); -int copy_thread(unsigned long clone_flags, unsigned long stack_start, - unsigned long stk_sz, struct task_struct *p) +int copy_thread_tls(unsigned long clone_flags, unsigned long stack_start, + unsigned long stk_sz, struct task_struct *p, unsigned long tls) { struct pt_regs *childregs = task_pt_regs(p); @@ -394,11 +394,11 @@ int copy_thread(unsigned long clone_flags, unsigned long stack_start, } /* - * If a TLS pointer was passed to clone (4th argument), use it - * for the new thread. + * If a TLS pointer was passed to clone, use it for the new + * thread. */ if (clone_flags & CLONE_SETTLS) - p->thread.uw.tp_value = childregs->regs[3]; + p->thread.uw.tp_value = tls; } else { memset(childregs, 0, sizeof(struct pt_regs)); childregs->pstate = PSR_MODE_EL1h; -- 2.24.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-01-02 17:24 UTC|newest] Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-01-02 17:24 [PATCH 0/7] Fix CLONE_SETTLS with clone3 Amanieu d'Antras 2020-01-02 17:24 ` [PATCH 1/7] arm64: Move __ARCH_WANT_SYS_CLONE3 definition to uapi headers Amanieu d'Antras 2020-01-02 17:24 ` Amanieu d'Antras 2020-01-02 17:50 ` Christian Brauner 2020-01-02 17:50 ` Christian Brauner 2020-01-02 19:25 ` Arnd Bergmann 2020-01-02 19:25 ` Arnd Bergmann 2020-01-02 19:32 ` Amanieu d'Antras 2020-01-02 19:32 ` Amanieu d'Antras 2020-01-02 19:59 ` Arnd Bergmann 2020-01-02 19:59 ` Arnd Bergmann 2020-01-02 17:24 ` Amanieu d'Antras [this message] 2020-01-02 17:24 ` [PATCH 2/7] arm64: Implement copy_thread_tls Amanieu d'Antras 2020-01-02 18:01 ` Christian Brauner 2020-01-02 18:01 ` Christian Brauner 2020-01-06 17:39 ` Will Deacon 2020-01-06 17:39 ` Will Deacon 2020-01-06 18:03 ` Amanieu d'Antras 2020-01-06 18:03 ` Amanieu d'Antras 2020-01-07 9:02 ` Christian Brauner 2020-01-07 9:02 ` Christian Brauner 2020-01-07 17:45 ` Will Deacon 2020-01-07 17:45 ` Will Deacon 2020-01-07 18:12 ` Kees Cook 2020-01-07 18:12 ` Kees Cook 2020-01-07 19:30 ` Christian Brauner 2020-01-07 19:30 ` Christian Brauner 2020-01-07 19:30 ` Christian Brauner 2020-01-07 19:30 ` Christian Brauner 2020-01-02 17:24 ` [PATCH 3/7] arm: " Amanieu d'Antras 2020-01-02 17:24 ` Amanieu d'Antras 2020-01-02 18:02 ` Christian Brauner 2020-01-02 18:02 ` Christian Brauner 2020-01-02 17:24 ` [PATCH 4/7] parisc: " Amanieu d'Antras 2020-01-02 17:24 ` [PATCH 5/7] riscv: " Amanieu d'Antras 2020-01-02 17:24 ` Amanieu d'Antras 2020-01-02 17:24 ` [PATCH 6/7] xtensa: " Amanieu d'Antras 2020-01-02 17:24 ` [PATCH 7/7] clone3: ensure copy_thread_tls is implemented Amanieu d'Antras 2020-01-02 18:09 ` Christian Brauner 2020-01-02 18:19 ` Amanieu d'Antras 2020-01-02 18:24 ` Christian Brauner 2020-01-02 18:11 ` [PATCH 0/7] Fix CLONE_SETTLS with clone3 Christian Brauner 2020-01-04 12:39 ` [PATCH] um: Implement copy_thread_tls Amanieu d'Antras 2020-01-04 12:39 ` Amanieu d'Antras 2020-01-05 15:19 ` Christian Brauner 2020-01-07 12:35 ` Christian Brauner 2020-01-07 12:35 ` Christian Brauner 2020-01-17 0:12 ` Richard Weinberger 2020-01-17 0:12 ` Richard Weinberger 2020-01-17 0:14 ` Christian Brauner 2020-01-17 0:14 ` Christian Brauner 2020-01-07 12:34 ` [PATCH 0/7] Fix CLONE_SETTLS with clone3 Christian Brauner
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200102172413.654385-3-amanieu@gmail.com \ --to=amanieu@gmail.com \ --cc=christian@brauner.io \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=stable@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.