]> git.hungrycats.org Git - linux/commitdiff
Fix SMP/preemption race condition in vm86 entry mode.
authorLinus Torvalds <torvalds@penguin.transmeta.com>
Mon, 31 Mar 2003 06:30:11 +0000 (22:30 -0800)
committerLinus Torvalds <torvalds@penguin.transmeta.com>
Mon, 31 Mar 2003 06:30:11 +0000 (22:30 -0800)
arch/i386/kernel/vm86.c

index 0f56219bbd9434fa51e620f38b37f2c458f40317..091f651daf6f26aca0a06cb39f4b2b40e0288b7d 100644 (file)
@@ -289,9 +289,10 @@ static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk
        asm volatile("movl %%fs,%0":"=m" (tsk->thread.saved_fs));
        asm volatile("movl %%gs,%0":"=m" (tsk->thread.saved_gs));
 
-       tss = init_tss + smp_processor_id();
+       tss = init_tss + get_cpu();
        tss->esp0 = tsk->thread.esp0 = (unsigned long) &info->VM86_TSS_ESP0;
        disable_sysenter(tss);
+       put_cpu();
 
        tsk->thread.screen_bitmap = info->screen_bitmap;
        if (info->flags & VM86_SCREEN_BITMAP)