aboutsummaryrefslogtreecommitdiff
path: root/arch/x86/um/tls_64.c
diff options
context:
space:
mode:
authorAmanieu d'Antras <[email protected]>2020-01-04 13:39:30 +0100
committerChristian Brauner <[email protected]>2020-01-07 13:31:29 +0100
commit457677c70c7672a4586b0b8abc396cc1ecdd376d (patch)
tree85e77ee4b63a05b0cc65d430110952512253b7d4 /arch/x86/um/tls_64.c
parentdd499f7a7e34270208350a849ef103c0b3ae477f (diff)
um: Implement copy_thread_tls
This is required for clone3 which passes the TLS value through a struct rather than a register. Signed-off-by: Amanieu d'Antras <[email protected]> Cc: [email protected] Cc: <[email protected]> # 5.3.x Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Christian Brauner <[email protected]>
Diffstat (limited to 'arch/x86/um/tls_64.c')
-rw-r--r--arch/x86/um/tls_64.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/arch/x86/um/tls_64.c b/arch/x86/um/tls_64.c
index 3a621e0d3925..ebd3855d9b13 100644
--- a/arch/x86/um/tls_64.c
+++ b/arch/x86/um/tls_64.c
@@ -6,14 +6,13 @@ void clear_flushed_tls(struct task_struct *task)
{
}
-int arch_copy_tls(struct task_struct *t)
+int arch_set_tls(struct task_struct *t, unsigned long tls)
{
/*
* If CLONE_SETTLS is set, we need to save the thread id
- * (which is argument 5, child_tid, of clone) so it can be set
- * during context switches.
+ * so it can be set during context switches.
*/
- t->thread.arch.fs = t->thread.regs.regs.gp[R8 / sizeof(long)];
+ t->thread.arch.fs = tls;
return 0;
}