svn commit: r284381 - head/sys/kern
Mateusz Guzik
mjg at FreeBSD.org
Sun Jun 14 14:10:06 UTC 2015
Author: mjg
Date: Sun Jun 14 14:10:05 2015
New Revision: 284381
URL: https://svnweb.freebsd.org/changeset/base/284381
Log:
fd: reduce excessive zeroing on fd close
fde_file as NULL is already an indicator of an unused fd. All other
fields are populated when fp is installed.
Modified:
head/sys/kern/kern_descrip.c
Modified: head/sys/kern/kern_descrip.c
==============================================================================
--- head/sys/kern/kern_descrip.c Sun Jun 14 14:08:52 2015 (r284380)
+++ head/sys/kern/kern_descrip.c Sun Jun 14 14:10:05 2015 (r284381)
@@ -309,7 +309,7 @@ fdfree(struct filedesc *fdp, int fd)
seq_write_begin(&fde->fde_seq);
#endif
fdefree_last(fde);
- bzero(fde, fde_change_size);
+ fde->fde_file = NULL;
fdunused(fdp, fd);
#ifdef CAPABILITIES
seq_write_end(&fde->fde_seq);
@@ -1651,7 +1651,6 @@ fdalloc(struct thread *td, int minfd, in
("fd_first_free() returned non-free descriptor"));
KASSERT(fdp->fd_ofiles[fd].fde_file == NULL,
("file descriptor isn't free"));
- KASSERT(fdp->fd_ofiles[fd].fde_flags == 0, ("file flags are set"));
fdused(fdp, fd);
*result = fd;
return (0);
@@ -1766,8 +1765,7 @@ _finstall(struct filedesc *fdp, struct f
seq_write_begin(&fde->fde_seq);
#endif
fde->fde_file = fp;
- if ((flags & O_CLOEXEC) != 0)
- fde->fde_flags |= UF_EXCLOSE;
+ fde->fde_flags = (flags & O_CLOEXEC) != 0 ? UF_EXCLOSE : 0;
if (fcaps != NULL)
filecaps_move(fcaps, &fde->fde_caps);
else
@@ -2852,7 +2850,7 @@ dupfdopen(struct thread *td, struct file
seq_write_begin(&newfde->fde_seq);
#endif
memcpy(newfde, oldfde, fde_change_size);
- bzero(oldfde, fde_change_size);
+ oldfde->fde_file = NULL;
fdunused(fdp, dfd);
#ifdef CAPABILITIES
seq_write_end(&newfde->fde_seq);
More information about the svn-src-head
mailing list