Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 44f5c4ce authored by Jeff Dike's avatar Jeff Dike Committed by Linus Torvalds
Browse files

[PATCH] uml: arch_prctl should set thread fs



In my previous x86_64 thread fix, I forgot to initialize thread.arch.fs in
arch_prctl.  A process calling arch_prctl to set %fs would lose it on the
next context switch.

It also turns out that you can switch to a process which is in the process
of exiting and which has lost its mm.  In this case, it's worse than
useless to try to call arch_prctl on the host process.

Signed-off-by: default avatarJeff Dike <jdike@linux.intel.com>
Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 9bebff6c
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -103,6 +103,9 @@ long arch_prctl_skas(struct task_struct *task, int code,

        switch(code){
	case ARCH_SET_FS:
		current->thread.arch.fs = (unsigned long) ptr;
		save_registers(pid, &current->thread.regs.regs);
		break;
	case ARCH_SET_GS:
                save_registers(pid, &current->thread.regs.regs);
		break;
@@ -140,9 +143,8 @@ long sys_clone(unsigned long clone_flags, unsigned long newsp,

void arch_switch_to_skas(struct task_struct *from, struct task_struct *to)
{
        if(to->thread.arch.fs == 0)
        if((to->thread.arch.fs == 0) || (to->mm == NULL))
                return;

        arch_prctl_skas(to, ARCH_SET_FS, (void __user *) to->thread.arch.fs);
}