소스 검색

[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>
Andi Kleen 20 년 전
부모
커밋
083044e63b
1개의 변경된 파일0개의 추가작업 그리고 29개의 파일을 삭제
  1. 0 29
      arch/x86_64/kernel/process.c

+ 0 - 29
arch/x86_64/kernel/process.c

@@ -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;
 }