summaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/process.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2009-03-16 13:07:21 +0100
committerThomas Gleixner <tglx@linutronix.de>2009-03-16 15:32:28 +0100
commit250981e6e1ef04947eccaa55e8c25ddcaa47a02e (patch)
tree0c6f576501be490b495d7e274f71f1e2903de662 /arch/x86/kernel/process.c
parent0f3fa48a7eaf5d1118cfda1650e8c759b2a116e4 (diff)
downloadblackbird-op-linux-250981e6e1ef04947eccaa55e8c25ddcaa47a02e.tar.gz
blackbird-op-linux-250981e6e1ef04947eccaa55e8c25ddcaa47a02e.zip
x86: reduce preemption off section in exit thread
Impact: latency improvement No need to keep preemption disabled over the kfree call. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/kernel/process.c')
-rw-r--r--arch/x86/kernel/process.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
index 6afa5232dbb7..156f87582c6c 100644
--- a/arch/x86/kernel/process.c
+++ b/arch/x86/kernel/process.c
@@ -65,11 +65,11 @@ void exit_thread(void)
{
struct task_struct *me = current;
struct thread_struct *t = &me->thread;
+ unsigned long *bp = t->io_bitmap_ptr;
- if (me->thread.io_bitmap_ptr) {
+ if (bp) {
struct tss_struct *tss = &per_cpu(init_tss, get_cpu());
- kfree(t->io_bitmap_ptr);
t->io_bitmap_ptr = NULL;
clear_thread_flag(TIF_IO_BITMAP);
/*
@@ -78,6 +78,7 @@ void exit_thread(void)
memset(tss->io_bitmap, 0xff, t->io_bitmap_max);
t->io_bitmap_max = 0;
put_cpu();
+ kfree(bp);
}
ds_exit_thread(current);
OpenPOWER on IntegriCloud