Author: kevans Date: Mon Feb 3 18:59:07 2020 New Revision: 357461 URL: https://svnweb.freebsd.org/changeset/base/357461
Log: namei: preserve errors from fget_cap_locked Most notably, we want to make sure we don't clobber any capabilities-related errors. This is a regression from r357412 (O_SEARCH) that was picked up by the capsicum tests. PR: 243839 Reviewed by: kib (committed form recommended by) Tested by: lwhsu Differential Revision: https://reviews.freebsd.org/D23479 Modified: head/sys/kern/vfs_lookup.c Modified: head/sys/kern/vfs_lookup.c ============================================================================== --- head/sys/kern/vfs_lookup.c Mon Feb 3 18:23:50 2020 (r357460) +++ head/sys/kern/vfs_lookup.c Mon Feb 3 18:59:07 2020 (r357461) @@ -452,8 +452,15 @@ namei(struct nameidata *ndp) */ error = fget_cap_locked(fdp, ndp->ni_dirfd, &rights, &dfp, &ndp->ni_filecaps); - if (error != 0 || dfp->f_ops == &badfileops || - dfp->f_vnode == NULL) { + if (error != 0) { + /* + * Preserve the error; it should either be EBADF + * or capability-related, both of which can be + * safely returned to the caller. + */ + } else if (dfp->f_ops == &badfileops) { + error = EBADF; + } else if (dfp->f_vnode == NULL) { error = ENOTDIR; } else { dp = dfp->f_vnode; _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"