svn commit: r267760 - head/sys/kern

看板FB_svn作者時間11年前 (2014/06/23 09:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/14 (看更多)
Author: mjg Date: Mon Jun 23 01:28:18 2014 New Revision: 267760 URL: http://svnweb.freebsd.org/changeset/base/267760 Log: Tidy up fd-related functions called by do_execve o assert in each one that fdp is not shared o remove unnecessary NULL checks - all userspace processes have fdtables and kernel processes cannot execve o remove comments about the danger of fd_ofiles getting reallocated - fdtable is not shared and fd_ofiles could be only reallocated if new fd was about to be added, but if that was possible the code would already be buggy as setugidsafety work could be undone MFC after: 1 week Modified: head/sys/kern/kern_descrip.c Modified: head/sys/kern/kern_descrip.c ============================================================================== --- head/sys/kern/kern_descrip.c Mon Jun 23 01:10:56 2014 (r267759) +++ head/sys/kern/kern_descrip.c Mon Jun 23 01:28:18 2014 (r267760) @@ -2081,15 +2081,8 @@ setugidsafety(struct thread *td) struct file *fp; int i; - /* Certain daemons might not have file descriptors. */ fdp = td->td_proc->p_fd; - if (fdp == NULL) - return; - - /* - * Note: fdp->fd_ofiles may be reallocated out from under us while - * we are blocked in a close. Be careful! - */ + KASSERT(fdp->fd_refcnt == 1, ("the fdtable should not be shared")); FILEDESC_XLOCK(fdp); for (i = 0; i <= fdp->fd_lastfile; i++) { if (i > 2) @@ -2141,15 +2134,8 @@ fdcloseexec(struct thread *td) struct file *fp; int i; - /* Certain daemons might not have file descriptors. */ fdp = td->td_proc->p_fd; - if (fdp == NULL) - return; - - /* - * We cannot cache fd_ofiles since operations - * may block and rip them out from under us. - */ + KASSERT(fdp->fd_refcnt == 1, ("the fdtable should not be shared")); FILEDESC_XLOCK(fdp); for (i = 0; i <= fdp->fd_lastfile; i++) { fde = &fdp->fd_ofiles[i]; @@ -2180,8 +2166,6 @@ fdcheckstd(struct thread *td) int i, error, devnull; fdp = td->td_proc->p_fd; - if (fdp == NULL) - return (0); KASSERT(fdp->fd_refcnt == 1, ("the fdtable should not be shared")); devnull = -1; error = 0; _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
文章代碼(AID): #1JfuEJBj (FB_svn)
討論串 (同標題文章)
文章代碼(AID): #1JfuEJBj (FB_svn)