Author: fabient
Date: Mon Dec  7 20:51:19 2009
New Revision: 200237
URL: http://svn.freebsd.org/changeset/base/200237

Log:
  MFC 200060:
  Use a better check for a valid kernel stack address when capturing
  kernel call chains.

Modified:
  stable/7/sys/dev/hwpmc/hwpmc_x86.c
Directory Properties:
  stable/7/sys/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)

Modified: stable/7/sys/dev/hwpmc/hwpmc_x86.c
==============================================================================
--- stable/7/sys/dev/hwpmc/hwpmc_x86.c  Mon Dec  7 20:49:49 2009        
(r200236)
+++ stable/7/sys/dev/hwpmc/hwpmc_x86.c  Mon Dec  7 20:51:19 2009        
(r200237)
@@ -176,7 +176,8 @@ pmc_save_kernel_callchain(uintptr_t *cc,
        stackend = (uintptr_t) td->td_kstack + td->td_kstack_pages * PAGE_SIZE;
 
        if (PMC_IN_TRAP_HANDLER(pc) ||
-           !PMC_IN_KERNEL(pc) || !PMC_IN_KERNEL(r) ||
+           !PMC_IN_KERNEL(pc) ||
+           !PMC_IN_KERNEL_STACK(r, stackstart, stackend) ||
            !PMC_IN_KERNEL_STACK(sp, stackstart, stackend) ||
            !PMC_IN_KERNEL_STACK(fp, stackstart, stackend))
                return (1);
@@ -221,7 +222,7 @@ pmc_save_kernel_callchain(uintptr_t *cc,
 
                r = fp + sizeof(uintptr_t);
                if (!PMC_IN_KERNEL_STACK(fp, stackstart, stackend) ||
-                   !PMC_IN_KERNEL(r))
+                   !PMC_IN_KERNEL_STACK(r, stackstart, stackend))
                        break;
                pc = *(uintptr_t *) r;
                fp = *(uintptr_t *) fp;
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to