PERFORCE change 219602 for review

Robert Watson rwatson at FreeBSD.org
Mon Nov 5 13:02:00 UTC 2012


http://p4web.freebsd.org/@@219602?ac=10

Change 219602 by rwatson at rwatson_svr_ctsrd_mipsbuild on 2012/11/05 13:01:32

	Define a very basic CHERI exception handler for userspace, which maps
	into a new SIGPROT signal that, uncaught, terminates the generating
	application.  Continue to panic the kernel if it generates a CHERI
	exception.  In the futue, it would be nice to trigger a core dump
	and more detailed debugging information, but this is a marked
	functional improvement in the mean time!

Affected files ...

.. //depot/projects/ctsrd/cheribsd/src/lib/libc/gen/signal.3#3 edit
.. //depot/projects/ctsrd/cheribsd/src/lib/libc/nls/C.msg#2 edit
.. //depot/projects/ctsrd/cheribsd/src/lib/libc/sys/sigaction.2#2 edit
.. //depot/projects/ctsrd/cheribsd/src/sys/mips/include/cherireg.h#8 edit
.. //depot/projects/ctsrd/cheribsd/src/sys/mips/mips/trap.c#8 edit
.. //depot/projects/ctsrd/cheribsd/src/sys/sys/signal.h#3 edit

Differences ...

==== //depot/projects/ctsrd/cheribsd/src/lib/libc/gen/signal.3#3 (text+ko) ====

@@ -28,7 +28,7 @@
 .\"     @(#)signal.3	8.3 (Berkeley) 4/19/94
 .\" $FreeBSD: src/lib/libc/gen/signal.3,v 1.44 2012/06/16 06:38:11 joel Exp $
 .\"
-.Dd June 7, 2004
+.Dd November 5, 2012
 .Dt SIGNAL 3
 .Os
 .Sh NAME
@@ -132,6 +132,7 @@
 .It 30 Ta Dv SIGUSR1 Ta "terminate process" Ta "User defined signal 1"
 .It 31 Ta Dv SIGUSR2 Ta "terminate process" Ta "User defined signal 2"
 .It 32 Ta Dv SIGTHR Ta "terminate process" Ta "thread interrupt"
+.It 34 Ta Dv SIGPROT Ta "terminate process" Ta "in-process protection exception"
 .El
 .Pp
 The

==== //depot/projects/ctsrd/cheribsd/src/lib/libc/nls/C.msg#2 (text+ko) ====

@@ -257,6 +257,10 @@
 30 User defined signal 1
 $ SIGUSR2
 31 User defined signal 2
+$ SIGTHR
+32 Thread interrupt
+$ SIGPROT
+33 In-process protection exception
 $
 $ gai_strerror() support catalog
 $

==== //depot/projects/ctsrd/cheribsd/src/lib/libc/sys/sigaction.2#2 (text+ko) ====

@@ -28,7 +28,7 @@
 .\"	From: @(#)sigaction.2	8.2 (Berkeley) 4/3/94
 .\" $FreeBSD: src/lib/libc/sys/sigaction.2,v 1.62 2010/05/06 22:49:54 jilles Exp $
 .\"
-.Dd April 18, 2010
+.Dd November 5, 2012
 .Dt SIGACTION 2
 .Os
 .Sh NAME
@@ -331,6 +331,8 @@
 .It Dv SIGINFO No "	discard signal" "	status request from keyboard"
 .It Dv SIGUSR1 No "	terminate process" "	User defined signal 1"
 .It Dv SIGUSR2 No "	terminate process" "	User defined signal 2"
+.It Dv SIGTHR No "	discard signal" "	thread interrupt"
+.It Dv SIGPROT No "	discard signal" "	in-process protection exception"
 .El
 .Sh NOTE
 The

==== //depot/projects/ctsrd/cheribsd/src/sys/mips/include/cherireg.h#8 (text+ko) ====


==== //depot/projects/ctsrd/cheribsd/src/sys/mips/mips/trap.c#8 (text+ko) ====

@@ -905,10 +905,26 @@
 			addr = trapframe->pc;
 		}
 		break;
+#ifdef CPU_CHERI
+	case T_C2E:
+		goto err;
+		break;
+
+	case T_C2E + T_USER:
+		/*
+		 * XXXRW: Eventually, do much, much more here.
+		 * log_cheri_exception("C2E", trapframe);
+		 */
+		i = SIGPROT;
+		addr = trapframe->pc;
+		break;
+
+#else
 	case T_C2E:
 	case T_C2E + T_USER:
 		goto err;
 		break;
+#endif
 	case T_COP_UNUSABLE:
 		cop = (trapframe->cause & MIPS_CR_COP_ERR) >> MIPS_CR_COP_ERR_SHIFT;
 #if defined(CPU_CHERI) && defined(DDB)

==== //depot/projects/ctsrd/cheribsd/src/sys/sys/signal.h#3 (text+ko) ====

@@ -112,6 +112,7 @@
 #define	SIGTHR		32	/* reserved by thread library. */
 #define	SIGLWP		SIGTHR
 #define	SIGLIBRT	33	/* reserved by real-time library. */
+#define	SIGPROT		34	/* in-address space security exception. */
 #endif
 
 #define	SIGRTMIN	65


More information about the p4-projects mailing list