PERFORCE change 229923 for review

Robert Watson rwatson at FreeBSD.org
Tue Jun 18 21:51:29 UTC 2013


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

Change 229923 by rwatson at rwatson_cinnamon on 2013/06/18 21:51:11

	Implement the tesla_event_handler teh_err method for DTrace and
	failstop in preference to dereferencing a NULL pointer.

Affected files ...

.. //depot/projects/ctsrd/tesla/src/sys/contrib/tesla/libtesla/tesla_dtrace.c#6 edit
.. //depot/projects/ctsrd/tesla/src/sys/contrib/tesla/libtesla/tesla_notification.c#11 edit

Differences ...

==== //depot/projects/ctsrd/tesla/src/sys/contrib/tesla/libtesla/tesla_dtrace.c#6 (text+ko) ====

@@ -52,6 +52,8 @@
 SDT_PROBE_DEFINE3(tesla, kernel, notify, bad_transition, bad-transition,
     "struct tesla_class *", "struct tesla_instance *",
     "struct tesla_transitions *");
+SDT_PROBE_DEFINE3(tesla, kernel, notify, err, err, "struct tesla_class *",
+    "int", "const char *");
 SDT_PROBE_DEFINE2(tesla, kernel, notify, accept, accept,
     "struct tesla_class *", "struct tesla_instance *");
 SDT_PROBE_DEFINE3(tesla, kernel, notify, ignored, ignored-event,
@@ -98,6 +100,13 @@
 }
 
 static void
+err(struct tesla_class *tcp, int errno, const char *message)
+{
+
+	SDT_PROBE(tesla, kernel, notify, err, tcp, errno, message, 0, 0);
+}
+
+static void
 accept(struct tesla_class *tcp, struct tesla_instance *tip)
 {
 
@@ -118,6 +127,7 @@
 	.teh_clone			= clone,
 	.teh_fail_no_instance		= no_instance,
 	.teh_bad_transition		= bad_transition,
+	.teh_err			= err,
 	.teh_accept			= accept,
 	.teh_ignored			= ignored,
 };

==== //depot/projects/ctsrd/tesla/src/sys/contrib/tesla/libtesla/tesla_notification.c#11 (text+ko) ====

@@ -330,12 +330,21 @@
 	tesla_panic("TESLA: failure in '%s': bad transition", tcp->tc_name);
 }
 
+static void
+panic_err(struct tesla_class *tcp, int errno, const char *message)
+{
+
+	tesla_panic("TESLA: error in '%s': %s (%d)", tcp->tc_name, message,
+	    errno);
+}
+
 static const struct tesla_event_handlers failstop_handlers = {
 	.teh_init		= ev_noop,
 	.teh_transition		= ev_noop,
 	.teh_clone		= ev_noop,
 	.teh_fail_no_instance	= panic_no_instance,
 	.teh_bad_transition	= panic_bad_transition,
+	.teh_err		= panic_err,
 	.teh_accept		= ev_noop,
 	.teh_ignored		= ev_noop,
 };


More information about the p4-projects mailing list