aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/kern_descrip.c
diff options
context:
space:
mode:
authorMateusz Guzik <mjg@FreeBSD.org>2021-04-28 20:55:03 +0000
committerMateusz Guzik <mjg@FreeBSD.org>2021-10-10 18:24:29 +0000
commita0558fe90d3bebdf8583888cc96b4c170eab8cfb (patch)
tree1dcf184ddb779cb7f28a35a7cdae38e92b5187dc /sys/kern/kern_descrip.c
parent880aec7361eab106b62dea28f3dedd457b3abb47 (diff)
downloadsrc-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.c97
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