diff options
author | Mateusz Guzik <mjg@FreeBSD.org> | 2021-04-28 20:55:03 +0000 |
---|---|---|
committer | Mateusz Guzik <mjg@FreeBSD.org> | 2021-10-10 18:24:29 +0000 |
commit | a0558fe90d3bebdf8583888cc96b4c170eab8cfb (patch) | |
tree | 1dcf184ddb779cb7f28a35a7cdae38e92b5187dc /sys/kern/kern_descrip.c | |
parent | 880aec7361eab106b62dea28f3dedd457b3abb47 (diff) | |
download | src-a0558fe90d3bebdf8583888cc96b4c170eab8cfb.tar.gz src-a0558fe90d3bebdf8583888cc96b4c170eab8cfb.zip |
Retire code added to support CloudABI
CloudABI was removed in cf0ee8738e31aa9e6fbf4dca4dac56d89226a71a
Diffstat (limited to 'sys/kern/kern_descrip.c')
-rw-r--r-- | sys/kern/kern_descrip.c | 97 |
1 files changed, 4 insertions, 93 deletions
diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c index 755b5df51c6a..b10dcc2f9469 100644 --- a/sys/kern/kern_descrip.c +++ b/sys/kern/kern_descrip.c @@ -906,7 +906,7 @@ kern_dup(struct thread *td, u_int mode, int flags, int old, int new) FILEDESC_XLOCK(fdp); if (fget_locked(fdp, old) == NULL) goto unlock; - if ((mode == FDDUP_FIXED || mode == FDDUP_MUSTREPLACE) && old == new) { + if (mode == FDDUP_FIXED && old == new) { td->td_retval[0] = new; if (flags & FDDUP_FLAG_CLOEXEC) fdp->fd_ofiles[new].fde_flags |= UF_EXCLOSE; @@ -932,13 +932,6 @@ kern_dup(struct thread *td, u_int mode, int flags, int old, int new) goto unlock; } break; - case FDDUP_MUSTREPLACE: - /* Target file descriptor must exist. */ - if (fget_locked(fdp, new) == NULL) { - fdrop(oldfp, td); - goto unlock; - } - break; case FDDUP_FIXED: if (new >= fdp->fd_nfiles) { /* @@ -2320,14 +2313,6 @@ pdunshare(struct thread *td) p->p_pd = pdp; } -void -fdinstall_remapped(struct thread *td, struct filedesc *fdp) -{ - - fdescfree(td); - td->td_proc->p_fd = fdp; -} - /* * Copy a filedesc structure. A NULL pointer in returns a NULL reference, * this is to ease callers, not catch errors. @@ -2381,66 +2366,6 @@ pdcopy(struct pwddesc *pdp) } /* - * Copies a filedesc structure, while remapping all file descriptors - * stored inside using a translation table. - * - * File descriptors are copied over to the new file descriptor table, - * regardless of whether the close-on-exec flag is set. - */ -int -fdcopy_remapped(struct filedesc *fdp, const int *fds, size_t nfds, - struct filedesc **ret) -{ - struct filedesc *newfdp; - struct filedescent *nfde, *ofde; - int error, i, lastfile; - - MPASS(fdp != NULL); - - newfdp = fdinit(fdp, true, &lastfile); - if (nfds > lastfile + 1) { - /* New table cannot be larger than the old one. */ - error = E2BIG; - goto bad; - } - /* Copy all passable descriptors (i.e. not kqueue). */ - newfdp->fd_freefile = nfds; - for (i = 0; i < nfds; ++i) { - if (fds[i] < 0 || fds[i] > lastfile) { - /* File descriptor out of bounds. */ - error = EBADF; - goto bad; - } - ofde = &fdp->fd_ofiles[fds[i]]; - if (ofde->fde_file == NULL) { - /* Unused file descriptor. */ - error = EBADF; - goto bad; - } - if ((ofde->fde_file->f_ops->fo_flags & DFLAG_PASSABLE) == 0) { - /* File descriptor cannot be passed. */ - error = EINVAL; - goto bad; - } - if (!fhold(ofde->fde_file)) { - error = EBADF; - goto bad; - } - nfde = &newfdp->fd_ofiles[i]; - *nfde = *ofde; - filecaps_copy(&ofde->fde_caps, &nfde->fde_caps, true); - fdused_init(newfdp, i); - } - FILEDESC_SUNLOCK(fdp); - *ret = newfdp; - return (0); -bad: - FILEDESC_SUNLOCK(fdp); - fdescfree_remapped(newfdp); - return (error); -} - -/* * Clear POSIX style locks. This is only used when fdp looses a reference (i.e. * one of processes using it exits) and the table used to be shared. */ @@ -2526,7 +2451,7 @@ retry: * Release a filedesc structure. */ static void -fdescfree_fds(struct thread *td, struct filedesc *fdp, bool needclose) +fdescfree_fds(struct thread *td, struct filedesc *fdp) { struct filedesc0 *fdp0; struct freetable *ft, *tft; @@ -2551,10 +2476,7 @@ fdescfree_fds(struct thread *td, struct filedesc *fdp, bool needclose) fp = fde->fde_file; if (fp != NULL) { fdefree_last(fde); - if (needclose) - (void) closef(fp, td); - else - fdrop(fp, td); + (void) closef(fp, td); } } @@ -2598,7 +2520,7 @@ fdescfree(struct thread *td) if (refcount_release(&fdp->fd_refcnt) == 0) return; - fdescfree_fds(td, fdp, 1); + fdescfree_fds(td, fdp); } void @@ -2621,17 +2543,6 @@ pdescfree(struct thread *td) pddrop(pdp); } -void -fdescfree_remapped(struct filedesc *fdp) -{ -#ifdef INVARIANTS - /* fdescfree_fds() asserts that fd_refcnt == 0. */ - if (!refcount_release(&fdp->fd_refcnt)) - panic("%s: fd table %p has extra references", __func__, fdp); -#endif - fdescfree_fds(curthread, fdp, 0); -} - /* * For setugid programs, we don't want to people to use that setugidness * to generate error messages which write to a file which otherwise would |