diff options
author | Mateusz Guzik <mjg@FreeBSD.org> | 2015-06-14 14:08:52 +0000 |
---|---|---|
committer | Mateusz Guzik <mjg@FreeBSD.org> | 2015-06-14 14:08:52 +0000 |
commit | ea31808c3b07eb7bdea0f8f552508ddf620f043f (patch) | |
tree | 3e0c86c9640af4b5b6613549cd3eef0d3c398674 /sys/kern/uipc_usrreq.c | |
parent | 3768a5dfb578706668bd43355ff995439da7429d (diff) | |
download | src-ea31808c3b07eb7bdea0f8f552508ddf620f043f.tar.gz src-ea31808c3b07eb7bdea0f8f552508ddf620f043f.zip |
fd: move out actual fp installation to _finstall
Use it in fd passing functions as the first step towards fd code cleanup.
Notes
Notes:
svn path=/head/; revision=284380
Diffstat (limited to 'sys/kern/uipc_usrreq.c')
-rw-r--r-- | sys/kern/uipc_usrreq.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/sys/kern/uipc_usrreq.c b/sys/kern/uipc_usrreq.c index 808020e5e61d..acf9fe9bd1e0 100644 --- a/sys/kern/uipc_usrreq.c +++ b/sys/kern/uipc_usrreq.c @@ -1736,7 +1736,7 @@ unp_externalize(struct mbuf *control, struct mbuf **controlp, int flags) int i; int *fdp; struct filedesc *fdesc = td->td_proc->p_fd; - struct filedescent *fde, **fdep; + struct filedescent **fdep; void *data; socklen_t clen = control->m_len, datalen; int error, newfds; @@ -1795,13 +1795,10 @@ unp_externalize(struct mbuf *control, struct mbuf **controlp, int flags) goto next; } for (i = 0; i < newfds; i++, fdp++) { - fde = &fdesc->fd_ofiles[*fdp]; - fde->fde_file = fdep[i]->fde_file; - filecaps_move(&fdep[i]->fde_caps, - &fde->fde_caps); - if ((flags & MSG_CMSG_CLOEXEC) != 0) - fde->fde_flags |= UF_EXCLOSE; - unp_externalize_fp(fde->fde_file); + _finstall(fdesc, fdep[i]->fde_file, *fdp, + (flags & MSG_CMSG_CLOEXEC) != 0 ? UF_EXCLOSE : 0, + &fdep[i]->fde_caps); + unp_externalize_fp(fdep[i]->fde_file); } FILEDESC_XUNLOCK(fdesc); free(fdep[0], M_FILECAPS); |