From mboxrd@z Thu Jan 1 00:00:00 1970 From: k.khlebnikov@samsung.com (Konstantin Khlebnikov) Date: Thu, 05 Dec 2013 12:34:30 +0400 Subject: [PATCH 2/2] ARM: fix framepointer check in unwind_frame In-Reply-To: <20131205083424.32632.51618.stgit@buzz> References: <20131205083424.32632.51618.stgit@buzz> Message-ID: <20131205083430.32632.11103.stgit@buzz> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org This patch fixes corner case when (fp + 4) overflows unsigned long, for example: fp = 0xFFFFFFFF -> fp + 4 == 3. Signed-off-by: Konstantin Khlebnikov --- arch/arm/kernel/stacktrace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/kernel/stacktrace.c b/arch/arm/kernel/stacktrace.c index 00f79e5..af4e8c8 100644 --- a/arch/arm/kernel/stacktrace.c +++ b/arch/arm/kernel/stacktrace.c @@ -31,7 +31,7 @@ int notrace unwind_frame(struct stackframe *frame) high = ALIGN(low, THREAD_SIZE); /* check current frame pointer is within bounds */ - if (fp < (low + 12) || fp + 4 >= high) + if (fp < low + 12 || fp > high - 4) return -EINVAL; /* restore the registers from the stack frame */