From 0ad8692247694171bf2d3f963f24b15f5223a0de Mon Sep 17 00:00:00 2001 From: trasz Date: Tue, 28 Oct 2008 13:44:11 +0000 Subject: 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) --- sys/fs/cd9660/cd9660_vfsops.c | 6 +++--- sys/fs/cd9660/cd9660_vnops.c | 8 ++++---- sys/fs/coda/coda_vnops.c | 12 ++++++------ sys/fs/devfs/devfs_vnops.c | 2 +- sys/fs/hpfs/hpfs_vnops.c | 8 ++++---- sys/fs/msdosfs/msdosfs_vfsops.c | 8 ++++---- sys/fs/msdosfs/msdosfs_vnops.c | 9 +++++---- sys/fs/ntfs/ntfs_vnops.c | 8 ++++---- sys/fs/nullfs/null_vnops.c | 4 ++-- sys/fs/nwfs/nwfs_vnops.c | 6 +++--- sys/fs/pseudofs/pseudofs_vnops.c | 2 +- sys/fs/smbfs/smbfs_vnops.c | 8 ++++---- sys/fs/tmpfs/tmpfs_vnops.c | 8 ++++---- sys/fs/udf/udf_vnops.c | 9 +++++---- sys/fs/unionfs/union_vnops.c | 38 +++++++++++++++++++------------------- 15 files changed, 69 insertions(+), 67 deletions(-) (limited to 'sys/fs') 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); -- cgit v1.1