View | Details | Raw Unified | Return to bug 199810
Collapse All | Expand All

(-)cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c (-7 / +4 lines)
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));

Return to bug 199810