Print this page
2915 DTrace in a zone should see "cpu", "curpsinfo", et al
2916 DTrace in a zone should be able to access fds[]
2917 DTrace in a zone should have limited provider access
Reviewed by: Joshua M. Clulow <josh@sysmgr.org>
Reviewed by: Adam Leventhal <ahl@delphix.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/sys/dtrace_impl.h
          +++ new/usr/src/uts/common/sys/dtrace_impl.h
↓ open down ↓ 916 lines elided ↑ open up ↑
 917  917          int dtms_stackdepth;                    /* cached stackdepth */
 918  918          int dtms_ustackdepth;                   /* cached ustackdepth */
 919  919          struct dtrace_probe *dtms_probe;        /* current probe */
 920  920          uintptr_t dtms_caller;                  /* cached caller */
 921  921          uint64_t dtms_ucaller;                  /* cached user-level caller */
 922  922          int dtms_ipl;                           /* cached interrupt pri lev */
 923  923          int dtms_fltoffs;                       /* faulting DIFO offset */
 924  924          uintptr_t dtms_strtok;                  /* saved strtok() pointer */
 925  925          uint32_t dtms_access;                   /* memory access rights */
 926  926          dtrace_difo_t *dtms_difo;               /* current dif object */
      927 +        file_t *dtms_getf;                      /* cached rval of getf() */
 927  928  } dtrace_mstate_t;
 928  929  
 929  930  #define DTRACE_COND_OWNER       0x1
 930  931  #define DTRACE_COND_USERMODE    0x2
 931  932  #define DTRACE_COND_ZONEOWNER   0x4
 932  933  
 933  934  #define DTRACE_PROBEKEY_MAXDEPTH        8       /* max glob recursion depth */
 934  935  
 935  936  /*
 936  937   * Access flag used by dtrace_mstate.dtms_access.
↓ open down ↓ 200 lines elided ↑ open up ↑
1137 1138          cyclic_id_t dts_cleaner;                /* cleaning cyclic */
1138 1139          cyclic_id_t dts_deadman;                /* deadman cyclic */
1139 1140          hrtime_t dts_alive;                     /* time last alive */
1140 1141          char dts_speculates;                    /* boolean: has speculations */
1141 1142          char dts_destructive;                   /* boolean: has dest. actions */
1142 1143          int dts_nformats;                       /* number of formats */
1143 1144          char **dts_formats;                     /* format string array */
1144 1145          dtrace_optval_t dts_options[DTRACEOPT_MAX]; /* options */
1145 1146          dtrace_cred_t dts_cred;                 /* credentials */
1146 1147          size_t dts_nretained;                   /* number of retained enabs */
     1148 +        int dts_getf;                           /* number of getf() calls */
1147 1149  };
1148 1150  
1149 1151  struct dtrace_provider {
1150 1152          dtrace_pattr_t dtpv_attr;               /* provider attributes */
1151 1153          dtrace_ppriv_t dtpv_priv;               /* provider privileges */
1152 1154          dtrace_pops_t dtpv_pops;                /* provider operations */
1153 1155          char *dtpv_name;                        /* provider name */
1154 1156          void *dtpv_arg;                         /* provider argument */
1155 1157          hrtime_t dtpv_defunct;                  /* when made defunct */
1156 1158          struct dtrace_provider *dtpv_next;      /* next provider */
↓ open down ↓ 156 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX