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>
