浏览代码

[ARM] Fix stacktrace FP range checking

Fix an oops in the stacktrace code, caused by improper range checking.
We subtract 12 off 'fp' before testing to see if it's below the low
bound.  However, if 'fp' were zero before, it becomes a very large
positive number, causing this test to succeed where it should fail.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King 18 年之前
父节点
当前提交
5b10c8e436
共有 1 个文件被更改,包括 1 次插入1 次删除
  1. 1 1
      arch/arm/kernel/stacktrace.c

+ 1 - 1
arch/arm/kernel/stacktrace.c

@@ -13,7 +13,7 @@ int walk_stackframe(unsigned long fp, unsigned long low, unsigned long high,
 		/*
 		 * Check current frame pointer is within bounds
 		 */
-		if ((fp - 12) < low || fp + 4 >= high)
+		if (fp < (low + 12) || fp + 4 >= high)
 			break;
 
 		frame = (struct stackframe *)(fp - 12);