summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/uipc_mqueue.c6
-rw-r--r--sys/kern/uipc_sem.c6
-rw-r--r--sys/kern/uipc_shm.c6
3 files changed, 3 insertions, 15 deletions
diff --git a/sys/kern/uipc_mqueue.c b/sys/kern/uipc_mqueue.c
index 2d18e77..73579d3 100644
--- a/sys/kern/uipc_mqueue.c
+++ b/sys/kern/uipc_mqueue.c
@@ -1977,7 +1977,7 @@ kern_kmq_open(struct thread *td, const char *upath, int flags, mode_t mode,
if (len < 2 || path[0] != '/' || strchr(path + 1, '/') != NULL)
return (EINVAL);
- error = falloc(td, &fp, &fd, 0);
+ error = falloc(td, &fp, &fd, O_CLOEXEC);
if (error)
return (error);
@@ -2032,10 +2032,6 @@ kern_kmq_open(struct thread *td, const char *upath, int flags, mode_t mode,
finit(fp, flags & (FREAD | FWRITE | O_NONBLOCK), DTYPE_MQUEUE, pn,
&mqueueops);
- FILEDESC_XLOCK(fdp);
- if (fdp->fd_ofiles[fd].fde_file == fp)
- fdp->fd_ofiles[fd].fde_flags |= UF_EXCLOSE;
- FILEDESC_XUNLOCK(fdp);
td->td_retval[0] = fd;
fdrop(fp, td);
return (0);
diff --git a/sys/kern/uipc_sem.c b/sys/kern/uipc_sem.c
index 2de3409..509f32e 100644
--- a/sys/kern/uipc_sem.c
+++ b/sys/kern/uipc_sem.c
@@ -485,7 +485,7 @@ ksem_create(struct thread *td, const char *name, semid_t *semidp, mode_t mode,
fdp = td->td_proc->p_fd;
mode = (mode & ~fdp->fd_cmask) & ACCESSPERMS;
- error = falloc(td, &fp, &fd, 0);
+ error = falloc(td, &fp, &fd, O_CLOEXEC);
if (error) {
if (name == NULL)
error = ENOSPC;
@@ -578,10 +578,6 @@ ksem_create(struct thread *td, const char *name, semid_t *semidp, mode_t mode,
finit(fp, FREAD | FWRITE, DTYPE_SEM, ks, &ksem_ops);
- FILEDESC_XLOCK(fdp);
- if (fdp->fd_ofiles[fd].fde_file == fp)
- fdp->fd_ofiles[fd].fde_flags |= UF_EXCLOSE;
- FILEDESC_XUNLOCK(fdp);
fdrop(fp, td);
return (0);
diff --git a/sys/kern/uipc_shm.c b/sys/kern/uipc_shm.c
index fc33de5..7a36a63 100644
--- a/sys/kern/uipc_shm.c
+++ b/sys/kern/uipc_shm.c
@@ -534,7 +534,7 @@ sys_shm_open(struct thread *td, struct shm_open_args *uap)
fdp = td->td_proc->p_fd;
cmode = (uap->mode & ~fdp->fd_cmask) & ACCESSPERMS;
- error = falloc(td, &fp, &fd, 0);
+ error = falloc(td, &fp, &fd, O_CLOEXEC);
if (error)
return (error);
@@ -629,10 +629,6 @@ sys_shm_open(struct thread *td, struct shm_open_args *uap)
finit(fp, FFLAGS(uap->flags & O_ACCMODE), DTYPE_SHM, shmfd, &shm_ops);
- FILEDESC_XLOCK(fdp);
- if (fdp->fd_ofiles[fd].fde_file == fp)
- fdp->fd_ofiles[fd].fde_flags |= UF_EXCLOSE;
- FILEDESC_XUNLOCK(fdp);
td->td_retval[0] = fd;
fdrop(fp, td);
OpenPOWER on IntegriCloud