Skip to content

Commit

Permalink
[PATCH] x86-64: Remove disable_tsc code in context switch
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Andi Kleen authored and Linus Torvalds committed Sep 12, 2005
1 parent fe5d5f0 commit 083044e
Showing 1 changed file with 0 additions and 29 deletions.
29 changes: 0 additions & 29 deletions arch/x86_64/kernel/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -486,33 +486,6 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long rsp,
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
*/
Expand Down Expand Up @@ -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;
}

Expand Down

0 comments on commit 083044e

Please sign in to comment.