Lines 962-968
Link Here
|
962 |
|
962 |
|
963 |
(void) snprintf(path, sizeof (path), "/dev/dtrace/%s", p1); |
963 |
(void) snprintf(path, sizeof (path), "/dev/dtrace/%s", p1); |
964 |
|
964 |
|
965 |
if ((fd = open(path, O_RDONLY)) == -1) |
965 |
if ((fd = open(path, O_RDONLY | O_CLOEXEC)) == -1) |
966 |
continue; /* failed to open driver; just skip it */ |
966 |
continue; /* failed to open driver; just skip it */ |
967 |
|
967 |
|
968 |
if (((prov = malloc(sizeof (dt_provmod_t))) == NULL) || |
968 |
if (((prov = malloc(sizeof (dt_provmod_t))) == NULL) || |
Lines 1099-1105
Link Here
|
1099 |
*/ |
1099 |
*/ |
1100 |
dt_provmod_open(&provmod, &df); |
1100 |
dt_provmod_open(&provmod, &df); |
1101 |
|
1101 |
|
1102 |
dtfd = open("/dev/dtrace/dtrace", O_RDWR); |
1102 |
dtfd = open("/dev/dtrace/dtrace", O_RDWR | O_CLOEXEC); |
1103 |
err = errno; /* save errno from opening dtfd */ |
1103 |
err = errno; /* save errno from opening dtfd */ |
1104 |
#if defined(__FreeBSD__) |
1104 |
#if defined(__FreeBSD__) |
1105 |
/* |
1105 |
/* |
Lines 1108-1114
Link Here
|
1108 |
*/ |
1108 |
*/ |
1109 |
if (err == ENOENT && modfind("dtraceall") < 0) { |
1109 |
if (err == ENOENT && modfind("dtraceall") < 0) { |
1110 |
kldload("dtraceall"); /* ignore the error */ |
1110 |
kldload("dtraceall"); /* ignore the error */ |
1111 |
dtfd = open("/dev/dtrace/dtrace", O_RDWR); |
1111 |
dtfd = open("/dev/dtrace/dtrace", O_RDWR | O_CLOEXEC); |
1112 |
err = errno; |
1112 |
err = errno; |
1113 |
} |
1113 |
} |
1114 |
#endif |
1114 |
#endif |
Lines 1115-1121
Link Here
|
1115 |
#ifdef illumos |
1115 |
#ifdef illumos |
1116 |
ftfd = open("/dev/dtrace/provider/fasttrap", O_RDWR); |
1116 |
ftfd = open("/dev/dtrace/provider/fasttrap", O_RDWR); |
1117 |
#else |
1117 |
#else |
1118 |
ftfd = open("/dev/dtrace/fasttrap", O_RDWR); |
1118 |
ftfd = open("/dev/dtrace/fasttrap", O_RDWR | O_CLOEXEC); |
1119 |
#endif |
1119 |
#endif |
1120 |
fterr = ftfd == -1 ? errno : 0; /* save errno from open ftfd */ |
1120 |
fterr = ftfd == -1 ? errno : 0; /* save errno from open ftfd */ |
1121 |
|
1121 |
|
Lines 1145-1153
Link Here
|
1145 |
return (set_open_errno(dtp, errp, err)); |
1145 |
return (set_open_errno(dtp, errp, err)); |
1146 |
} |
1146 |
} |
1147 |
|
1147 |
|
1148 |
(void) fcntl(dtfd, F_SETFD, FD_CLOEXEC); |
|
|
1149 |
(void) fcntl(ftfd, F_SETFD, FD_CLOEXEC); |
1150 |
|
1151 |
alloc: |
1148 |
alloc: |
1152 |
if ((dtp = malloc(sizeof (dtrace_hdl_t))) == NULL) |
1149 |
if ((dtp = malloc(sizeof (dtrace_hdl_t))) == NULL) |
1153 |
return (set_open_errno(dtp, errp, EDT_NOMEM)); |
1150 |
return (set_open_errno(dtp, errp, EDT_NOMEM)); |