In revision 1.94 of kern_descrip.c, in the dup2() syscall a goto retry loop was added so that if we did a fdalloc() we always retested everything. Since fd_nfiles can't shrink and new and old can't change, I don't see why the loop is necessary. Neither dup() or the F_DUPFD fcntl() were modified in this way either. Also, calling fdalloc() in this case is somewhat bogus, because fdalloc() is going to try and reserve an open slot and update variables such as fd_lastfile, etc. appropriately. Perhaps we should have an fdextend() function that both dup2() and fdalloc() call? Also, in do_dup() you have commented out the call to munmapfd() on an open file with UF_MAPPED and never turned it back on. Was that intentional or just an accidental oversight?
-- John Baldwin <[EMAIL PROTECTED]> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-current" in the body of the message