svn commit: r334370 - head/sys/cddl/dev/dtrace/powerpc
Justin Hibbits
jhibbits at FreeBSD.org
Wed May 30 03:48:28 UTC 2018
Author: jhibbits
Date: Wed May 30 03:48:27 2018
New Revision: 334370
URL: https://svnweb.freebsd.org/changeset/base/334370
Log:
Protect dtrace_getpcstack() from a NULL stack pointer in a trap frame
Found when trying to use lockstat on a POWER9, the stack pointer (r1) could
be NULL, and result in a NULL pointer dereference, crashing the kernel.
Modified:
head/sys/cddl/dev/dtrace/powerpc/dtrace_isa.c
Modified: head/sys/cddl/dev/dtrace/powerpc/dtrace_isa.c
==============================================================================
--- head/sys/cddl/dev/dtrace/powerpc/dtrace_isa.c Wed May 30 03:40:02 2018 (r334369)
+++ head/sys/cddl/dev/dtrace/powerpc/dtrace_isa.c Wed May 30 03:48:27 2018 (r334370)
@@ -98,6 +98,7 @@ static __inline uintptr_t
dtrace_next_sp(uintptr_t sp)
{
vm_offset_t callpc;
+ uintptr_t *r1;
struct trapframe *frame;
#ifdef __powerpc64__
@@ -114,7 +115,10 @@ dtrace_next_sp(uintptr_t sp)
callpc + OFFSET == (vm_offset_t) &asttrapexit)) {
/* Access the trap frame */
frame = (struct trapframe *)(sp + FRAME_OFFSET);
- return (*(uintptr_t *)(frame->fixreg[1]));
+ r1 = (uintptr_t *)frame->fixreg[1];
+ if (r1 == NULL)
+ return (0);
+ return (*r1);
}
return (*(uintptr_t*)sp);
More information about the svn-src-head
mailing list