[PATCH] x86-64: Remove disable_tsc code in context switch
It only offers extremly dubious security advantages and is not worth the overhead in this critical path. Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
fe5d5f073e
commit
083044e63b
|
@ -486,33 +486,6 @@ out:
|
|||
return err;
|
||||
}
|
||||
|
||||
/*
|
||||
* This function selects if the context switch from prev to next
|
||||
* has to tweak the TSC disable bit in the cr4.
|
||||
*/
|
||||
static inline void disable_tsc(struct task_struct *prev_p,
|
||||
struct task_struct *next_p)
|
||||
{
|
||||
struct thread_info *prev, *next;
|
||||
|
||||
/*
|
||||
* gcc should eliminate the ->thread_info dereference if
|
||||
* has_secure_computing returns 0 at compile time (SECCOMP=n).
|
||||
*/
|
||||
prev = prev_p->thread_info;
|
||||
next = next_p->thread_info;
|
||||
|
||||
if (has_secure_computing(prev) || has_secure_computing(next)) {
|
||||
/* slow path here */
|
||||
if (has_secure_computing(prev) &&
|
||||
!has_secure_computing(next)) {
|
||||
write_cr4(read_cr4() & ~X86_CR4_TSD);
|
||||
} else if (!has_secure_computing(prev) &&
|
||||
has_secure_computing(next))
|
||||
write_cr4(read_cr4() | X86_CR4_TSD);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* This special macro can be used to load a debugging register
|
||||
*/
|
||||
|
@ -631,8 +604,6 @@ struct task_struct *__switch_to(struct task_struct *prev_p, struct task_struct *
|
|||
}
|
||||
}
|
||||
|
||||
disable_tsc(prev_p, next_p);
|
||||
|
||||
return prev_p;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue