diff options
author | Benjamin Berg <benjamin@sipsolutions.net> | 2023-11-10 12:03:46 +0100 |
---|---|---|
committer | Richard Weinberger <richard@nod.at> | 2024-01-05 16:28:56 +0100 |
commit | 1ca1443570e4085c180ecc657d319c21b22a76f6 (patch) | |
tree | 17c835b4186c46ff36d3281cc526f160dd516dbb /arch/x86/um/tls_64.c | |
parent | 21822553a5f424892c12d1664b3c1235b095c6c6 (diff) |
um: Rely on PTRACE_SETREGSET to set FS/GS base registers
These registers are saved/restored together with the other general
registers using ptrace. In arch_set_tls we then just need to set the
register and it will be synced back normally.
Most of this logic was introduced in commit f355559cf7845 ("[PATCH] uml:
x86_64 thread fixes"). However, at least today we can rely on ptrace to
restore the base registers for us. As such, only the part of the patch
that tracks the FS register for use as thread local storage is actually
needed.
Signed-off-by: Benjamin Berg <benjamin@sipsolutions.net>
Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'arch/x86/um/tls_64.c')
-rw-r--r-- | arch/x86/um/tls_64.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/um/tls_64.c b/arch/x86/um/tls_64.c index ebd3855d9b13..c51a613f6f5c 100644 --- a/arch/x86/um/tls_64.c +++ b/arch/x86/um/tls_64.c @@ -12,7 +12,7 @@ int arch_set_tls(struct task_struct *t, unsigned long tls) * If CLONE_SETTLS is set, we need to save the thread id * so it can be set during context switches. */ - t->thread.arch.fs = tls; + t->thread.regs.regs.gp[FS_BASE / sizeof(unsigned long)] = tls; return 0; } |