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