summaryrefslogtreecommitdiffstats
path: root/sys/fs
diff options
context:
space:
mode:
authortrasz <trasz@FreeBSD.org>2008-10-28 13:44:11 +0000
committertrasz <trasz@FreeBSD.org>2008-10-28 13:44:11 +0000
commit0ad8692247694171bf2d3f963f24b15f5223a0de (patch)
treecb5d9bbe34cd6eae2c3dd212bdfdfd85569424dd /sys/fs
parentbc6713490924420312442a3f3fc4ef1fe4b8e400 (diff)
downloadFreeBSD-src-0ad8692247694171bf2d3f963f24b15f5223a0de.zip
FreeBSD-src-0ad8692247694171bf2d3f963f24b15f5223a0de.tar.gz
Introduce accmode_t. This is required for NFSv4 ACLs - it will be neccessary
to add more V* constants, and the variables changed by this patch were often being assigned to mode_t variables, which is 16 bit. Approved by: rwatson (mentor)
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/cd9660/cd9660_vfsops.c6
-rw-r--r--sys/fs/cd9660/cd9660_vnops.c8
-rw-r--r--sys/fs/coda/coda_vnops.c12
-rw-r--r--sys/fs/devfs/devfs_vnops.c2
-rw-r--r--sys/fs/hpfs/hpfs_vnops.c8
-rw-r--r--sys/fs/msdosfs/msdosfs_vfsops.c8
-rw-r--r--sys/fs/msdosfs/msdosfs_vnops.c9
-rw-r--r--sys/fs/ntfs/ntfs_vnops.c8
-rw-r--r--sys/fs/nullfs/null_vnops.c4
-rw-r--r--sys/fs/nwfs/nwfs_vnops.c6
-rw-r--r--sys/fs/pseudofs/pseudofs_vnops.c2
-rw-r--r--sys/fs/smbfs/smbfs_vnops.c8
-rw-r--r--sys/fs/tmpfs/tmpfs_vnops.c8
-rw-r--r--sys/fs/udf/udf_vnops.c9
-rw-r--r--sys/fs/unionfs/union_vnops.c38
15 files changed, 69 insertions, 67 deletions
diff --git a/sys/fs/cd9660/cd9660_vfsops.c b/sys/fs/cd9660/cd9660_vfsops.c
index 7a8953d..919ecf7 100644
--- a/sys/fs/cd9660/cd9660_vfsops.c
+++ b/sys/fs/cd9660/cd9660_vfsops.c
@@ -128,7 +128,7 @@ cd9660_mount(struct mount *mp, struct thread *td)
struct vnode *devvp;
char *fspec;
int error;
- mode_t accessmode;
+ accmode_t accmode;
struct nameidata ndp;
struct iso_mnt *imp = 0;
@@ -168,9 +168,9 @@ cd9660_mount(struct mount *mp, struct thread *td)
* Verify that user has necessary permissions on the device,
* or has superuser abilities
*/
- accessmode = VREAD;
+ accmode = VREAD;
vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY);
- error = VOP_ACCESS(devvp, accessmode, td->td_ucred, td);
+ error = VOP_ACCESS(devvp, accmode, td->td_ucred, td);
if (error)
error = priv_check(td, PRIV_VFS_MOUNT_PERM);
if (error) {
diff --git a/sys/fs/cd9660/cd9660_vnops.c b/sys/fs/cd9660/cd9660_vnops.c
index 76fb233..9e99a5b 100644
--- a/sys/fs/cd9660/cd9660_vnops.c
+++ b/sys/fs/cd9660/cd9660_vnops.c
@@ -125,14 +125,14 @@ static int
cd9660_access(ap)
struct vop_access_args /* {
struct vnode *a_vp;
- int a_mode;
+ accmode_t a_accmode;
struct ucred *a_cred;
struct thread *a_td;
} */ *ap;
{
struct vnode *vp = ap->a_vp;
struct iso_node *ip = VTOI(vp);
- mode_t mode = ap->a_mode;
+ accmode_t accmode = ap->a_accmode;
if (vp->v_type == VCHR || vp->v_type == VBLK)
return (EOPNOTSUPP);
@@ -142,7 +142,7 @@ cd9660_access(ap)
* fifo, or a block or character device resident on the
* filesystem.
*/
- if (mode & VWRITE) {
+ if (accmode & VWRITE) {
switch (vp->v_type) {
case VDIR:
case VLNK:
@@ -155,7 +155,7 @@ cd9660_access(ap)
}
return (vaccess(vp->v_type, ip->inode.iso_mode, ip->inode.iso_uid,
- ip->inode.iso_gid, ap->a_mode, ap->a_cred, NULL));
+ ip->inode.iso_gid, ap->a_accmode, ap->a_cred, NULL));
}
static int
diff --git a/sys/fs/coda/coda_vnops.c b/sys/fs/coda/coda_vnops.c
index f6165a9..a913bd6 100644
--- a/sys/fs/coda/coda_vnops.c
+++ b/sys/fs/coda/coda_vnops.c
@@ -607,7 +607,7 @@ coda_access(struct vop_access_args *ap)
/* true args */
struct vnode *vp = ap->a_vp;
struct cnode *cp = VTOC(vp);
- int mode = ap->a_mode;
+ accmode_t accmode = ap->a_accmode;
struct ucred *cred = ap->a_cred;
struct thread *td = ap->a_td;
/* locals */
@@ -624,7 +624,7 @@ coda_access(struct vop_access_args *ap)
* Bogus hack - all will be marked as successes.
*/
MARK_INT_SAT(CODA_ACCESS_STATS);
- return (((mode & VREAD) && !(mode & (VWRITE | VEXEC)))
+ return (((accmode & VREAD) && !(accmode & (VWRITE | VEXEC)))
? 0 : EACCES);
}
@@ -636,11 +636,11 @@ coda_access(struct vop_access_args *ap)
*/
if (coda_access_cache && VALID_ACCCACHE(cp) &&
(cred->cr_uid == cp->c_cached_uid) &&
- (mode & cp->c_cached_mode) == mode) {
+ (accmode & cp->c_cached_mode) == accmode) {
MARK_INT_SAT(CODA_ACCESS_STATS);
return (0);
}
- error = venus_access(vtomi(vp), &cp->c_fid, mode, cred, td->td_proc);
+ error = venus_access(vtomi(vp), &cp->c_fid, accmode, cred, td->td_proc);
if (error == 0 && coda_access_cache) {
/*-
* When we have a new successful request, we consider three
@@ -658,10 +658,10 @@ coda_access(struct vop_access_args *ap)
*/
cp->c_flags |= C_ACCCACHE;
if (cp->c_cached_uid != cred->cr_uid) {
- cp->c_cached_mode = mode;
+ cp->c_cached_mode = accmode;
cp->c_cached_uid = cred->cr_uid;
} else
- cp->c_cached_mode |= mode;
+ cp->c_cached_mode |= accmode;
}
return (error);
}
diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c
index 54afebe..ad27a05 100644
--- a/sys/fs/devfs/devfs_vnops.c
+++ b/sys/fs/devfs/devfs_vnops.c
@@ -372,7 +372,7 @@ devfs_access(struct vop_access_args *ap)
de = de->de_dir;
error = vaccess(vp->v_type, de->de_mode, de->de_uid, de->de_gid,
- ap->a_mode, ap->a_cred, NULL);
+ ap->a_accmode, ap->a_cred, NULL);
if (!error)
return (error);
if (error != EACCES)
diff --git a/sys/fs/hpfs/hpfs_vnops.c b/sys/fs/hpfs/hpfs_vnops.c
index af7cd52..c5a2a06 100644
--- a/sys/fs/hpfs/hpfs_vnops.c
+++ b/sys/fs/hpfs/hpfs_vnops.c
@@ -683,14 +683,14 @@ int
hpfs_access(ap)
struct vop_access_args /* {
struct vnode *a_vp;
- int a_mode;
+ accmode_t a_accmode;
struct ucred *a_cred;
struct thread *a_td;
} */ *ap;
{
struct vnode *vp = ap->a_vp;
struct hpfsnode *hp = VTOHP(vp);
- mode_t mode = ap->a_mode;
+ accmode_t accmode = ap->a_accmode;
dprintf(("hpfs_access(0x%x):\n", hp->h_no));
@@ -699,7 +699,7 @@ hpfs_access(ap)
* unless the file is a socket, fifo, or a block or
* character device resident on the filesystem.
*/
- if (mode & VWRITE) {
+ if (accmode & VWRITE) {
switch ((int)vp->v_type) {
case VDIR:
case VLNK:
@@ -711,7 +711,7 @@ hpfs_access(ap)
}
return (vaccess(vp->v_type, hp->h_mode, hp->h_uid, hp->h_gid,
- ap->a_mode, ap->a_cred, NULL));
+ ap->a_accmode, ap->a_cred, NULL));
}
/*
diff --git a/sys/fs/msdosfs/msdosfs_vfsops.c b/sys/fs/msdosfs/msdosfs_vfsops.c
index 8991e18..c6b5fb5 100644
--- a/sys/fs/msdosfs/msdosfs_vfsops.c
+++ b/sys/fs/msdosfs/msdosfs_vfsops.c
@@ -240,7 +240,7 @@ msdosfs_mount(struct mount *mp, struct thread *td)
struct msdosfsmount *pmp = NULL;
struct nameidata ndp;
int error, flags;
- mode_t accessmode;
+ accmode_t accmode;
char *from;
if (vfs_filteropt(mp->mnt_optnew, msdosfs_opts))
@@ -363,10 +363,10 @@ msdosfs_mount(struct mount *mp, struct thread *td)
* If mount by non-root, then verify that user has necessary
* permissions on the device.
*/
- accessmode = VREAD;
+ accmode = VREAD;
if ((mp->mnt_flag & MNT_RDONLY) == 0)
- accessmode |= VWRITE;
- error = VOP_ACCESS(devvp, accessmode, td->td_ucred, td);
+ accmode |= VWRITE;
+ error = VOP_ACCESS(devvp, accmode, td->td_ucred, td);
if (error)
error = priv_check(td, PRIV_VFS_MOUNT_PERM);
if (error) {
diff --git a/sys/fs/msdosfs/msdosfs_vnops.c b/sys/fs/msdosfs/msdosfs_vnops.c
index 877e492..ccbd0b1 100644
--- a/sys/fs/msdosfs/msdosfs_vnops.c
+++ b/sys/fs/msdosfs/msdosfs_vnops.c
@@ -249,7 +249,7 @@ static int
msdosfs_access(ap)
struct vop_access_args /* {
struct vnode *a_vp;
- int a_mode;
+ accmode_t a_accmode;
struct ucred *a_cred;
struct thread *a_td;
} */ *ap;
@@ -257,7 +257,8 @@ msdosfs_access(ap)
struct vnode *vp = ap->a_vp;
struct denode *dep = VTODE(ap->a_vp);
struct msdosfsmount *pmp = dep->de_pmp;
- mode_t file_mode, mode = ap->a_mode;
+ mode_t file_mode;
+ accmode_t accmode = ap->a_accmode;
file_mode = (S_IXUSR|S_IXGRP|S_IXOTH) | (S_IRUSR|S_IRGRP|S_IROTH) |
((dep->de_Attributes & ATTR_READONLY) ? 0 : (S_IWUSR|S_IWGRP|S_IWOTH));
@@ -267,7 +268,7 @@ msdosfs_access(ap)
* Disallow writing to directories and regular files if the
* filesystem is read-only.
*/
- if (mode & VWRITE) {
+ if (accmode & VWRITE) {
switch (vp->v_type) {
case VDIR:
case VREG:
@@ -280,7 +281,7 @@ msdosfs_access(ap)
}
return (vaccess(vp->v_type, file_mode, pmp->pm_uid, pmp->pm_gid,
- ap->a_mode, ap->a_cred, NULL));
+ ap->a_accmode, ap->a_cred, NULL));
}
static int
diff --git a/sys/fs/ntfs/ntfs_vnops.c b/sys/fs/ntfs/ntfs_vnops.c
index 991504c..799c96a 100644
--- a/sys/fs/ntfs/ntfs_vnops.c
+++ b/sys/fs/ntfs/ntfs_vnops.c
@@ -386,14 +386,14 @@ int
ntfs_access(ap)
struct vop_access_args /* {
struct vnode *a_vp;
- int a_mode;
+ accmode_t a_accmode;
struct ucred *a_cred;
struct thread *a_td;
} */ *ap;
{
struct vnode *vp = ap->a_vp;
struct ntnode *ip = VTONT(vp);
- mode_t mode = ap->a_mode;
+ accmode_t accmode = ap->a_accmode;
#ifdef QUOTA
int error;
#endif
@@ -405,7 +405,7 @@ ntfs_access(ap)
* unless the file is a socket, fifo, or a block or
* character device resident on the filesystem.
*/
- if (mode & VWRITE) {
+ if (accmode & VWRITE) {
switch ((int)vp->v_type) {
case VDIR:
case VLNK:
@@ -421,7 +421,7 @@ ntfs_access(ap)
}
return (vaccess(vp->v_type, ip->i_mp->ntm_mode, ip->i_mp->ntm_uid,
- ip->i_mp->ntm_gid, ap->a_mode, ap->a_cred, NULL));
+ ip->i_mp->ntm_gid, ap->a_accmode, ap->a_cred, NULL));
}
/*
diff --git a/sys/fs/nullfs/null_vnops.c b/sys/fs/nullfs/null_vnops.c
index 9b1edd9..483c702 100644
--- a/sys/fs/nullfs/null_vnops.c
+++ b/sys/fs/nullfs/null_vnops.c
@@ -451,14 +451,14 @@ static int
null_access(struct vop_access_args *ap)
{
struct vnode *vp = ap->a_vp;
- mode_t mode = ap->a_mode;
+ accmode_t accmode = ap->a_accmode;
/*
* Disallow write attempts on read-only layers;
* unless the file is a socket, fifo, or a block or
* character device resident on the filesystem.
*/
- if (mode & VWRITE) {
+ if (accmode & VWRITE) {
switch (vp->v_type) {
case VDIR:
case VLNK:
diff --git a/sys/fs/nwfs/nwfs_vnops.c b/sys/fs/nwfs/nwfs_vnops.c
index a4ac871..9dcd9aa 100644
--- a/sys/fs/nwfs/nwfs_vnops.c
+++ b/sys/fs/nwfs/nwfs_vnops.c
@@ -121,7 +121,7 @@ static int
nwfs_access(ap)
struct vop_access_args /* {
struct vnode *a_vp;
- int a_mode;
+ accmode_t a_accmode;
struct ucred *a_cred;
struct thread *td;
} */ *ap;
@@ -131,7 +131,7 @@ nwfs_access(ap)
struct nwmount *nmp = VTONWFS(vp);
NCPVNDEBUG("\n");
- if ((ap->a_mode & VWRITE) && (vp->v_mount->mnt_flag & MNT_RDONLY)) {
+ if ((ap->a_accmode & VWRITE) && (vp->v_mount->mnt_flag & MNT_RDONLY)) {
switch (vp->v_type) {
case VREG: case VDIR: case VLNK:
return (EROFS);
@@ -142,7 +142,7 @@ nwfs_access(ap)
mpmode = vp->v_type == VREG ? nmp->m.file_mode :
nmp->m.dir_mode;
return (vaccess(vp->v_type, mpmode, nmp->m.uid,
- nmp->m.gid, ap->a_mode, ap->a_cred, NULL));
+ nmp->m.gid, ap->a_accmode, ap->a_cred, NULL));
}
/*
* nwfs_open vnode op
diff --git a/sys/fs/pseudofs/pseudofs_vnops.c b/sys/fs/pseudofs/pseudofs_vnops.c
index 4cbbc22..ef91bfd 100644
--- a/sys/fs/pseudofs/pseudofs_vnops.c
+++ b/sys/fs/pseudofs/pseudofs_vnops.c
@@ -132,7 +132,7 @@ pfs_access(struct vop_access_args *va)
if (error)
PFS_RETURN (error);
error = vaccess(vn->v_type, vattr.va_mode, vattr.va_uid,
- vattr.va_gid, va->a_mode, va->a_cred, NULL);
+ vattr.va_gid, va->a_accmode, va->a_cred, NULL);
PFS_RETURN (error);
}
diff --git a/sys/fs/smbfs/smbfs_vnops.c b/sys/fs/smbfs/smbfs_vnops.c
index 4504eb7..e34ebe2 100644
--- a/sys/fs/smbfs/smbfs_vnops.c
+++ b/sys/fs/smbfs/smbfs_vnops.c
@@ -123,18 +123,18 @@ static int
smbfs_access(ap)
struct vop_access_args /* {
struct vnode *a_vp;
- int a_mode;
+ accmode_t a_accmode;
struct ucred *a_cred;
struct thread *a_td;
} */ *ap;
{
struct vnode *vp = ap->a_vp;
- mode_t mode = ap->a_mode;
+ accmode_t accmode = ap->a_accmode;
mode_t mpmode;
struct smbmount *smp = VTOSMBFS(vp);
SMBVDEBUG("\n");
- if ((mode & VWRITE) && (vp->v_mount->mnt_flag & MNT_RDONLY)) {
+ if ((accmode & VWRITE) && (vp->v_mount->mnt_flag & MNT_RDONLY)) {
switch (vp->v_type) {
case VREG: case VDIR: case VLNK:
return EROFS;
@@ -144,7 +144,7 @@ smbfs_access(ap)
}
mpmode = vp->v_type == VREG ? smp->sm_file_mode : smp->sm_dir_mode;
return (vaccess(vp->v_type, mpmode, smp->sm_uid,
- smp->sm_gid, ap->a_mode, ap->a_cred, NULL));
+ smp->sm_gid, ap->a_accmode, ap->a_cred, NULL));
}
/* ARGSUSED */
diff --git a/sys/fs/tmpfs/tmpfs_vnops.c b/sys/fs/tmpfs/tmpfs_vnops.c
index 54795c1..8f76bdf 100644
--- a/sys/fs/tmpfs/tmpfs_vnops.c
+++ b/sys/fs/tmpfs/tmpfs_vnops.c
@@ -282,7 +282,7 @@ int
tmpfs_access(struct vop_access_args *v)
{
struct vnode *vp = v->a_vp;
- int mode = v->a_mode;
+ accmode_t accmode = v->a_accmode;
struct ucred *cred = v->a_cred;
int error;
@@ -298,7 +298,7 @@ tmpfs_access(struct vop_access_args *v)
case VLNK:
/* FALLTHROUGH */
case VREG:
- if (mode & VWRITE && vp->v_mount->mnt_flag & MNT_RDONLY) {
+ if (accmode & VWRITE && vp->v_mount->mnt_flag & MNT_RDONLY) {
error = EROFS;
goto out;
}
@@ -318,13 +318,13 @@ tmpfs_access(struct vop_access_args *v)
goto out;
}
- if (mode & VWRITE && node->tn_flags & IMMUTABLE) {
+ if (accmode & VWRITE && node->tn_flags & IMMUTABLE) {
error = EPERM;
goto out;
}
error = vaccess(vp->v_type, node->tn_mode, node->tn_uid,
- node->tn_gid, mode, cred, NULL);
+ node->tn_gid, accmode, cred, NULL);
out:
MPASS(VOP_ISLOCKED(vp));
diff --git a/sys/fs/udf/udf_vnops.c b/sys/fs/udf/udf_vnops.c
index d468890..77b11fe 100644
--- a/sys/fs/udf/udf_vnops.c
+++ b/sys/fs/udf/udf_vnops.c
@@ -139,13 +139,14 @@ udf_access(struct vop_access_args *a)
{
struct vnode *vp;
struct udf_node *node;
- mode_t a_mode, mode;
+ accmode_t accmode;
+ mode_t mode;
vp = a->a_vp;
node = VTON(vp);
- a_mode = a->a_mode;
+ accmode = a->a_accmode;
- if (a_mode & VWRITE) {
+ if (accmode & VWRITE) {
switch (vp->v_type) {
case VDIR:
case VLNK:
@@ -160,7 +161,7 @@ udf_access(struct vop_access_args *a)
mode = udf_permtomode(node);
return (vaccess(vp->v_type, mode, node->fentry->uid, node->fentry->gid,
- a_mode, a->a_cred, NULL));
+ accmode, a->a_cred, NULL));
}
static int
diff --git a/sys/fs/unionfs/union_vnops.c b/sys/fs/unionfs/union_vnops.c
index e06735f..e900e7b 100644
--- a/sys/fs/unionfs/union_vnops.c
+++ b/sys/fs/unionfs/union_vnops.c
@@ -583,7 +583,7 @@ unionfs_close_abort:
* Check the access mode toward shadow file/dir.
*/
static int
-unionfs_check_corrected_access(u_short mode,
+unionfs_check_corrected_access(accmode_t accmode,
struct vattr *va,
struct ucred *cred)
{
@@ -601,11 +601,11 @@ unionfs_check_corrected_access(u_short mode,
/* check owner */
if (cred->cr_uid == uid) {
- if (mode & VEXEC)
+ if (accmode & VEXEC)
mask |= S_IXUSR;
- if (mode & VREAD)
+ if (accmode & VREAD)
mask |= S_IRUSR;
- if (mode & VWRITE)
+ if (accmode & VWRITE)
mask |= S_IWUSR;
return ((vmode & mask) == mask ? 0 : EACCES);
}
@@ -615,22 +615,22 @@ unionfs_check_corrected_access(u_short mode,
gp = cred->cr_groups;
for (; count < cred->cr_ngroups; count++, gp++) {
if (gid == *gp) {
- if (mode & VEXEC)
+ if (accmode & VEXEC)
mask |= S_IXGRP;
- if (mode & VREAD)
+ if (accmode & VREAD)
mask |= S_IRGRP;
- if (mode & VWRITE)
+ if (accmode & VWRITE)
mask |= S_IWGRP;
return ((vmode & mask) == mask ? 0 : EACCES);
}
}
/* check other */
- if (mode & VEXEC)
+ if (accmode & VEXEC)
mask |= S_IXOTH;
- if (mode & VREAD)
+ if (accmode & VREAD)
mask |= S_IROTH;
- if (mode & VWRITE)
+ if (accmode & VWRITE)
mask |= S_IWOTH;
return ((vmode & mask) == mask ? 0 : EACCES);
@@ -645,7 +645,7 @@ unionfs_access(struct vop_access_args *ap)
struct vnode *lvp;
struct thread *td;
struct vattr va;
- int mode;
+ accmode_t accmode;
int error;
UNIONFS_INTERNAL_DEBUG("unionfs_access: enter\n");
@@ -655,10 +655,10 @@ unionfs_access(struct vop_access_args *ap)
uvp = unp->un_uppervp;
lvp = unp->un_lowervp;
td = ap->a_td;
- mode = ap->a_mode;
+ accmode = ap->a_accmode;
error = EACCES;
- if ((mode & VWRITE) &&
+ if ((accmode & VWRITE) &&
(ap->a_vp->v_mount->mnt_flag & MNT_RDONLY)) {
switch (ap->a_vp->v_type) {
case VREG:
@@ -671,7 +671,7 @@ unionfs_access(struct vop_access_args *ap)
}
if (uvp != NULLVP) {
- error = VOP_ACCESS(uvp, mode, ap->a_cred, td);
+ error = VOP_ACCESS(uvp, accmode, ap->a_cred, td);
UNIONFS_INTERNAL_DEBUG("unionfs_access: leave (%d)\n", error);
@@ -679,7 +679,7 @@ unionfs_access(struct vop_access_args *ap)
}
if (lvp != NULLVP) {
- if (mode & VWRITE) {
+ if (accmode & VWRITE) {
if (ump->um_uppervp->v_mount->mnt_flag & MNT_RDONLY) {
switch (ap->a_vp->v_type) {
case VREG:
@@ -698,15 +698,15 @@ unionfs_access(struct vop_access_args *ap)
return (error);
error = unionfs_check_corrected_access(
- mode, &va, ap->a_cred);
+ accmode, &va, ap->a_cred);
if (error != 0)
return (error);
}
}
- mode &= ~VWRITE;
- mode |= VREAD; /* will copy to upper */
+ accmode &= ~VWRITE;
+ accmode |= VREAD; /* will copy to upper */
}
- error = VOP_ACCESS(lvp, mode, ap->a_cred, td);
+ error = VOP_ACCESS(lvp, accmode, ap->a_cred, td);
}
UNIONFS_INTERNAL_DEBUG("unionfs_access: leave (%d)\n", error);
OpenPOWER on IntegriCloud