Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 18 May 2014 16:02:57 +0000 (UTC)
From:      Ian Lepore <ian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r266404 - stable/10/sys/arm/arm
Message-ID:  <201405181602.s4IG2vVN002651@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ian
Date: Sun May 18 16:02:56 2014
New Revision: 266404
URL: http://svnweb.freebsd.org/changeset/base/266404

Log:
  MFC 256941: make sure the frame is indeed in the kernel memory.

Modified:
  stable/10/sys/arm/arm/stack_machdep.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/arm/arm/stack_machdep.c
==============================================================================
--- stable/10/sys/arm/arm/stack_machdep.c	Sun May 18 15:31:53 2014	(r266403)
+++ stable/10/sys/arm/arm/stack_machdep.c	Sun May 18 16:02:56 2014	(r266404)
@@ -43,13 +43,16 @@ __FBSDID("$FreeBSD$");
  * APCS where it lays out the stack incorrectly. Because of this we disable
  * this when building for ARM EABI or when building with clang.
  */
+
+extern vm_offset_t kernel_vm_end;
+
 static void
 stack_capture(struct stack *st, u_int32_t *frame)
 {
 #if !defined(__ARM_EABI__) && !defined(__clang__)
 	vm_offset_t callpc;
 
-	while (INKERNEL(frame)) {
+	while (INKERNEL(frame) && (vm_offset_t)frame < kernel_vm_end) {
 		callpc = frame[FR_SCP];
 		if (stack_put(st, callpc) == -1)
 			break;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201405181602.s4IG2vVN002651>