PERFORCE change 93627 for review
Todd Miller
millert at FreeBSD.org
Mon Mar 20 15:26:35 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=93627
Change 93627 by millert at millert_p3 on 2006/03/20 15:25:46
In fdcopy() set newfdp->fd_freefile after the first loop
over fdp instead of the loop over newfdp. This means we
never enter fdused() with fd_freefile == -1. It also fixes
a bug when fdp->fd_lastfile == -1. Previously, if
fdp->fd_lastfile was -1 newfdp->fd_freefile would get set
to 1 instead of 0 since newfdp->fd_lastfile is initialized
to 0 and newfdp->fd_freefile will not have been set in the
first loop (which doesn't run at all in this case).
It's not clear why newfdp->fd_freefile is -1 at this point.
Affected files ...
.. //depot/projects/trustedbsd/sebsd/sys/kern/kern_descrip.c#18 edit
Differences ...
==== //depot/projects/trustedbsd/sebsd/sys/kern/kern_descrip.c#18 (text+ko) ====
@@ -1604,17 +1604,15 @@
newfdp->fd_freefile = i;
}
}
+ newfdp->fd_cmask = fdp->fd_cmask;
FILEDESC_UNLOCK_FAST(fdp);
FILEDESC_LOCK(newfdp);
+ if (newfdp->fd_freefile == -1)
+ newfdp->fd_freefile = i;
for (i = 0; i <= newfdp->fd_lastfile; ++i)
if (newfdp->fd_ofiles[i] != NULL)
fdused(newfdp, i);
FILEDESC_UNLOCK(newfdp);
- FILEDESC_LOCK_FAST(fdp);
- if (newfdp->fd_freefile == -1)
- newfdp->fd_freefile = i;
- newfdp->fd_cmask = fdp->fd_cmask;
- FILEDESC_UNLOCK_FAST(fdp);
return (newfdp);
}
More information about the trustedbsd-cvs
mailing list