diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index c51ae8ff32a..04c1c7bade1 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -1994,23 +1994,23 @@ vn_access(vp, user_flags, cred, td) int error; /* Flags == 0 means only check for existence. */ - error = 0; - if (user_flags) { - accmode = 0; - if (user_flags & R_OK) - accmode |= VREAD; - if (user_flags & W_OK) - accmode |= VWRITE; - if (user_flags & X_OK) - accmode |= VEXEC; + if (user_flags == 0) + return (0); + + accmode = 0; + if (user_flags & R_OK) + accmode |= VREAD; + if (user_flags & W_OK) + accmode |= VWRITE; + if (user_flags & X_OK) + accmode |= VEXEC; #ifdef MAC - error = mac_vnode_check_access(cred, vp, accmode); - if (error != 0) - return (error); + error = mac_vnode_check_access(cred, vp, accmode); + if (error != 0) + return (error); #endif - if ((accmode & VWRITE) == 0 || (error = vn_writechk(vp)) == 0) - error = VOP_ACCESS(vp, accmode, cred, td); - } + if ((accmode & VWRITE) == 0 || (error = vn_writechk(vp)) == 0) + error = VOP_ACCESS(vp, accmode, cred, td); return (error); }