summaryrefslogtreecommitdiffstats
path: root/sys/cddl/dev
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2015-08-07 04:31:02 +0000
committerkib <kib@FreeBSD.org>2015-08-07 04:31:02 +0000
commit984b7d731dea8738e6ddaf5aa99948e24165db69 (patch)
tree635b028b27fd8672d55aa060d6cce56e353bdcf3 /sys/cddl/dev
parent33b0e51d3675f713008b851000f8de7710273c3d (diff)
downloadFreeBSD-src-984b7d731dea8738e6ddaf5aa99948e24165db69.zip
FreeBSD-src-984b7d731dea8738e6ddaf5aa99948e24165db69.tar.gz
MFC r285643:
When checking for the valid value of the frame pointer, verify that it belongs to the kernel stack address range for the thread.
Diffstat (limited to 'sys/cddl/dev')
-rw-r--r--sys/cddl/dev/dtrace/amd64/dtrace_isa.c8
-rw-r--r--sys/cddl/dev/dtrace/i386/dtrace_isa.c8
2 files changed, 8 insertions, 8 deletions
diff --git a/sys/cddl/dev/dtrace/amd64/dtrace_isa.c b/sys/cddl/dev/dtrace/amd64/dtrace_isa.c
index 336befc..07a1b0a 100644
--- a/sys/cddl/dev/dtrace/amd64/dtrace_isa.c
+++ b/sys/cddl/dev/dtrace/amd64/dtrace_isa.c
@@ -89,8 +89,8 @@ dtrace_getpcstack(pc_t *pcstack, int pcstack_limit, int aframes,
}
if (frame->f_frame <= frame ||
- (vm_offset_t)frame->f_frame >=
- (vm_offset_t)rbp + KSTACK_PAGES * PAGE_SIZE)
+ (vm_offset_t)frame->f_frame >= curthread->td_kstack +
+ curthread->td_kstack_pages * PAGE_SIZE)
break;
frame = frame->f_frame;
}
@@ -469,8 +469,8 @@ dtrace_getstackdepth(int aframes)
break;
depth++;
if (frame->f_frame <= frame ||
- (vm_offset_t)frame->f_frame >=
- (vm_offset_t)rbp + KSTACK_PAGES * PAGE_SIZE)
+ (vm_offset_t)frame->f_frame >= curthread->td_kstack +
+ curthread->td_kstack_pages * PAGE_SIZE)
break;
frame = frame->f_frame;
}
diff --git a/sys/cddl/dev/dtrace/i386/dtrace_isa.c b/sys/cddl/dev/dtrace/i386/dtrace_isa.c
index 04f205c..63a7c08 100644
--- a/sys/cddl/dev/dtrace/i386/dtrace_isa.c
+++ b/sys/cddl/dev/dtrace/i386/dtrace_isa.c
@@ -92,8 +92,8 @@ dtrace_getpcstack(pc_t *pcstack, int pcstack_limit, int aframes,
}
if (frame->f_frame <= frame ||
- (vm_offset_t)frame->f_frame >=
- (vm_offset_t)ebp + KSTACK_PAGES * PAGE_SIZE)
+ (vm_offset_t)frame->f_frame >= curthread->td_kstack +
+ curthread->td_kstack_pages * PAGE_SIZE)
break;
frame = frame->f_frame;
}
@@ -485,8 +485,8 @@ dtrace_getstackdepth(int aframes)
break;
depth++;
if (frame->f_frame <= frame ||
- (vm_offset_t)frame->f_frame >=
- (vm_offset_t)ebp + KSTACK_PAGES * PAGE_SIZE)
+ (vm_offset_t)frame->f_frame >= curthread->td_kstack +
+ curthread->td_kstack_pages * PAGE_SIZE)
break;
frame = frame->f_frame;
}
OpenPOWER on IntegriCloud