6718877 crgetzoneid() use can cause problems when forking processes with USDT providers in a non global zone
--- a/usr/src/uts/common/dtrace/dtrace.c Wed Jul 02 02:52:25 2008 -0700
+++ b/usr/src/uts/common/dtrace/dtrace.c Wed Jul 02 03:42:24 2008 -0700
@@ -10778,7 +10778,8 @@
for (enab = dtrace_retained; enab != NULL; enab = enab->dten_next) {
cred_t *cr = enab->dten_vstate->dtvs_state->dts_cred.dcr_cred;
- if (INGLOBALZONE(curproc) || getzoneid() == crgetzoneid(cr))
+ if (INGLOBALZONE(curproc) ||
+ cr != NULL && getzoneid() == crgetzoneid(cr))
(void) dtrace_enabling_match(enab, NULL);
}