浏览代码

arm64: arm_generic: prevent reading stale time

Currently arch_counter_get_cnt{p,v}ct can be speculated, allowing for
stale time values to be read. This could be problematic for the delay
loop and other sensitive functions, as the time delta could jump around
unexpectedly.

This patch adds isbs to arch_counter_get_cnt{p,v}ct, preventing this
possibility.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Mark Rutland 13 年之前
父节点
当前提交
1dac0dd71c
共有 1 个文件被更改,包括 2 次插入0 次删除
  1. 2 0
      arch/arm64/include/asm/arm_generic.h

+ 2 - 0
arch/arm64/include/asm/arm_generic.h

@@ -83,6 +83,7 @@ static inline cycle_t arch_counter_get_cntpct(void)
 {
 {
 	cycle_t cval;
 	cycle_t cval;
 
 
+	isb();
 	asm volatile("mrs %0, cntpct_el0" : "=r" (cval));
 	asm volatile("mrs %0, cntpct_el0" : "=r" (cval));
 
 
 	return cval;
 	return cval;
@@ -92,6 +93,7 @@ static inline cycle_t arch_counter_get_cntvct(void)
 {
 {
 	cycle_t cval;
 	cycle_t cval;
 
 
+	isb();
 	asm volatile("mrs %0, cntvct_el0" : "=r" (cval));
 	asm volatile("mrs %0, cntvct_el0" : "=r" (cval));
 
 
 	return cval;
 	return cval;