Module Name:    src
Committed By:   rmind
Date:           Sun Jan 22 03:13:20 UTC 2012

Modified Files:
        src/sys/fs/tmpfs: tmpfs_vnops.c

Log Message:
tmpfs_access: simplify, no need to separate the logic.


To generate a diff of this commit:
cvs rdiff -u -r1.93 -r1.94 src/sys/fs/tmpfs/tmpfs_vnops.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/fs/tmpfs/tmpfs_vnops.c
diff -u src/sys/fs/tmpfs/tmpfs_vnops.c:1.93 src/sys/fs/tmpfs/tmpfs_vnops.c:1.94
--- src/sys/fs/tmpfs/tmpfs_vnops.c:1.93	Fri Nov 18 21:18:51 2011
+++ src/sys/fs/tmpfs/tmpfs_vnops.c	Sun Jan 22 03:13:19 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: tmpfs_vnops.c,v 1.93 2011/11/18 21:18:51 christos Exp $	*/
+/*	$NetBSD: tmpfs_vnops.c,v 1.94 2012/01/22 03:13:19 rmind Exp $	*/
 
 /*
  * Copyright (c) 2005, 2006, 2007 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tmpfs_vnops.c,v 1.93 2011/11/18 21:18:51 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tmpfs_vnops.c,v 1.94 2012/01/22 03:13:19 rmind Exp $");
 
 #include <sys/param.h>
 #include <sys/dirent.h>
@@ -382,11 +382,24 @@ tmpfs_close(void *v)
 	return 0;
 }
 
-static int
-tmpfs_check_possible(vnode_t *vp, tmpfs_node_t *node, mode_t mode)
+int
+tmpfs_access(void *v)
 {
+	struct vop_access_args /* {
+		struct vnode	*a_vp;
+		int		a_mode;
+		kauth_cred_t	a_cred;
+	} */ *ap = v;
+	vnode_t *vp = ap->a_vp;
+	mode_t mode = ap->a_mode;
+	kauth_cred_t cred = ap->a_cred;
+	tmpfs_node_t *node = VP_TO_TMPFS_NODE(vp);
 	const bool writing = (mode & VWRITE) != 0;
+	int error;
+
+	KASSERT(VOP_ISLOCKED(vp));
 
+	/* Possible? */
 	switch (vp->v_type) {
 	case VDIR:
 	case VLNK:
@@ -403,41 +416,16 @@ tmpfs_check_possible(vnode_t *vp, tmpfs_
 	default:
 		return EINVAL;
 	}
-	return (writing && (node->tn_flags & IMMUTABLE) != 0) ? EPERM : 0;
-}
-
-static int
-tmpfs_check_permitted(vnode_t *vp, tmpfs_node_t *node, mode_t mode,
-    kauth_cred_t cred)
-{
+	if (writing && (node->tn_flags & IMMUTABLE) != 0) {
+		return EPERM;
+	}
 
-	return genfs_can_access(vp->v_type, node->tn_mode, node->tn_uid,
+	/* Permitted? */
+	error = genfs_can_access(vp->v_type, node->tn_mode, node->tn_uid,
 	    node->tn_gid, mode, cred);
-}
 
-int
-tmpfs_access(void *v)
-{
-	struct vop_access_args /* {
-		struct vnode	*a_vp;
-		int		a_mode;
-		kauth_cred_t	a_cred;
-	} */ *ap = v;
-	vnode_t *vp = ap->a_vp;
-	mode_t mode = ap->a_mode;
-	kauth_cred_t cred = ap->a_cred;
-	tmpfs_node_t *node;
-	int error;
-
-	KASSERT(VOP_ISLOCKED(vp));
-
-	node = VP_TO_TMPFS_NODE(vp);
-	error = tmpfs_check_possible(vp, node, mode);
-	if (error) {
-		return error;
-	}
 	return kauth_authorize_vnode(cred, kauth_mode_to_action(mode), vp,
-	    NULL, tmpfs_check_permitted(vp, node, mode, cred));
+	    NULL, error);
 }
 
 int

Reply via email to