Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Jun 2013 21:51:28 GMT
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 229923 for review
Message-ID:  <201306182151.r5ILpSG9078467@skunkworks.freebsd.org>

index | next in thread | raw e-mail

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

Change 229923 by rwatson@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,
 };


help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201306182151.r5ILpSG9078467>