]> git.hungrycats.org Git - linux/commitdiff
x86-64: fix preempt race in exit_thread
authorLinus Torvalds <torvalds@ppc970.osdl.org>
Fri, 7 May 2004 02:59:19 +0000 (19:59 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Fri, 7 May 2004 02:59:19 +0000 (19:59 -0700)
This fixes a (very very small) preempt race window when we
invalidate the IO permission bitmap on process exit.

arch/x86_64/kernel/process.c

index d1d9471581a883219b40ae2dae32550ff263a674..e80d5eb1b699cf099fd6bffee09f88dd2a5d4dbf 100644 (file)
@@ -256,10 +256,11 @@ void exit_thread(void)
 {
        struct task_struct *me = current;
        if (me->thread.io_bitmap_ptr) { 
+               struct tss_struct *tss = init_tss + get_cpu();
                kfree(me->thread.io_bitmap_ptr); 
                me->thread.io_bitmap_ptr = NULL;
-               (init_tss + smp_processor_id())->io_bitmap_base = 
-                       INVALID_IO_BITMAP_OFFSET;
+               tss->io_bitmap_base = INVALID_IO_BITMAP_OFFSET;
+               put_cpu();
        }
 }