svn commit: r185284 - head/sys/fs/unionfs
Daichi GOTO
daichi at FreeBSD.org
Mon Nov 24 19:49:41 PST 2008
Author: daichi
Date: Tue Nov 25 03:49:41 2008
New Revision: 185284
URL: http://svn.freebsd.org/changeset/base/185284
Log:
Simplify mode_t check treatment (suggested by trasz).
By semantical view, trasz's code is better than prior one.
Submitted by: trasz
Reviewed by: Masanori OZAWA <ozawa at ongs.co.jp>
Modified:
head/sys/fs/unionfs/union_vfsops.c
Modified: head/sys/fs/unionfs/union_vfsops.c
==============================================================================
--- head/sys/fs/unionfs/union_vfsops.c Tue Nov 25 03:18:35 2008 (r185283)
+++ head/sys/fs/unionfs/union_vfsops.c Tue Nov 25 03:49:41 2008 (r185284)
@@ -67,43 +67,6 @@ static vfs_extattrctl_t unionfs_extattrc
static struct vfsops unionfs_vfsops;
/*
- * Exchange from userland file mode to vmode.
- */
-static u_short
-mode2vmode(mode_t mode)
-{
- u_short ret;
-
- ret = 0;
-
- /* other */
- if (mode & S_IXOTH)
- ret |= VEXEC >> 6;
- if (mode & S_IWOTH)
- ret |= VWRITE >> 6;
- if (mode & S_IROTH)
- ret |= VREAD >> 6;
-
- /* group */
- if (mode & S_IXGRP)
- ret |= VEXEC >> 3;
- if (mode & S_IWGRP)
- ret |= VWRITE >> 3;
- if (mode & S_IRGRP)
- ret |= VREAD >> 3;
-
- /* owner */
- if (mode & S_IXUSR)
- ret |= VEXEC;
- if (mode & S_IWUSR)
- ret |= VWRITE;
- if (mode & S_IRUSR)
- ret |= VREAD;
-
- return (ret);
-}
-
-/*
* Mount unionfs layer.
*/
static int
@@ -174,7 +137,7 @@ unionfs_domount(struct mount *mp, struct
vfs_mount_error(mp, "Invalid udir");
return (EINVAL);
}
- udir = mode2vmode(udir);
+ udir &= S_IRWXU | S_IRWXG | S_IRWXO;
}
if (vfs_getopt(mp->mnt_optnew, "ufile", (void **)&tmp, NULL) == 0) {
if (tmp != NULL)
@@ -183,7 +146,7 @@ unionfs_domount(struct mount *mp, struct
vfs_mount_error(mp, "Invalid ufile");
return (EINVAL);
}
- ufile = mode2vmode(ufile);
+ ufile &= S_IRWXU | S_IRWXG | S_IRWXO;
}
/* check umask, uid and gid */
if (udir == 0 && ufile != 0)
More information about the svn-src-head
mailing list