summaryrefslogtreecommitdiff
path: root/arch/x86/um/tls_32.c
diff options
context:
space:
mode:
authorAmanieu d'Antras <amanieu@gmail.com>2020-01-04 13:39:30 +0100
committerChristian Brauner <christian.brauner@ubuntu.com>2020-01-07 13:31:29 +0100
commit457677c70c7672a4586b0b8abc396cc1ecdd376d (patch)
tree85e77ee4b63a05b0cc65d430110952512253b7d4 /arch/x86/um/tls_32.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 <amanieu@gmail.com> Cc: linux-um@lists.infradead.org Cc: <stable@vger.kernel.org> # 5.3.x Link: https://lore.kernel.org/r/20200104123928.1048822-1-amanieu@gmail.com Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Diffstat (limited to 'arch/x86/um/tls_32.c')
-rw-r--r--arch/x86/um/tls_32.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/arch/x86/um/tls_32.c b/arch/x86/um/tls_32.c
index 5bd949da7a4a..ac8eee093f9c 100644
--- a/arch/x86/um/tls_32.c
+++ b/arch/x86/um/tls_32.c
@@ -215,14 +215,12 @@ static int set_tls_entry(struct task_struct* task, struct user_desc *info,
return 0;
}
-int arch_copy_tls(struct task_struct *new)
+int arch_set_tls(struct task_struct *new, unsigned long tls)
{
struct user_desc info;
int idx, ret = -EFAULT;
- if (copy_from_user(&info,
- (void __user *) UPT_SI(&new->thread.regs.regs),
- sizeof(info)))
+ if (copy_from_user(&info, (void __user *) tls, sizeof(info)))
goto out;
ret = -EINVAL;