FreeBSD Bugzilla – Attachment 88773 Details for
Bug 125613
[ufs] [patch] ACL problems with special files
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
ufs-acl-special-files-fixes.diff
ufs-acl-special-files-fixes.diff (text/plain), 3.66 KB, created by
Jaakko Heinonen
on 2008-07-14 20:40:05 UTC
(
hide
)
Description:
ufs-acl-special-files-fixes.diff
Filename:
MIME Type:
Creator:
Jaakko Heinonen
Created:
2008-07-14 20:40:05 UTC
Size:
3.66 KB
patch
obsolete
>Index: sys/ufs/ufs/ufs_vnops.c >=================================================================== >--- sys/ufs/ufs/ufs_vnops.c (revision 180363) >+++ sys/ufs/ufs/ufs_vnops.c (working copy) >@@ -113,6 +113,7 @@ static vop_symlink_t ufs_symlink; > static vop_whiteout_t ufs_whiteout; > static vop_close_t ufsfifo_close; > static vop_kqfilter_t ufsfifo_kqfilter; >+static vop_pathconf_t ufsfifo_pathconf; > > /* > * A virgin directory (no blushing please). >@@ -2094,7 +2095,9 @@ ufs_pathconf(ap) > break; > case _PC_ACL_EXTENDED: > #ifdef UFS_ACL >- if (ap->a_vp->v_mount->mnt_flag & MNT_ACLS) >+ /* ACLs are not supported for device files */ >+ if ((ap->a_vp->v_mount->mnt_flag & MNT_ACLS) && >+ ap->a_vp->v_type != VCHR && ap->a_vp->v_type != VBLK) > *ap->a_retval = 1; > else > *ap->a_retval = 0; >@@ -2104,7 +2107,9 @@ ufs_pathconf(ap) > break; > case _PC_ACL_PATH_MAX: > #ifdef UFS_ACL >- if (ap->a_vp->v_mount->mnt_flag & MNT_ACLS) >+ /* ACLs are not supported for device files */ >+ if ((ap->a_vp->v_mount->mnt_flag & MNT_ACLS) && >+ ap->a_vp->v_type != VCHR && ap->a_vp->v_type != VBLK) > *ap->a_retval = ACL_MAX_ENTRIES; > else > *ap->a_retval = 3; >@@ -2163,6 +2168,30 @@ ufs_pathconf(ap) > } > > /* >+ * Return POSIX pathconf information applicable to fifos. >+ */ >+static int >+ufsfifo_pathconf(ap) >+ struct vop_pathconf_args /* { >+ struct vnode *a_vp; >+ int a_name; >+ int *a_retval; >+ } */ *ap; >+{ >+ /* >+ * XXX: Check which variables fifos should support. >+ */ >+ switch (ap->a_name) { >+ case _PC_ACL_EXTENDED: >+ case _PC_ACL_PATH_MAX: >+ return (ufs_pathconf(ap)); >+ default: >+ return (fifo_specops.vop_pathconf(ap)); >+ } >+ /* NOTREACHED */ >+} >+ >+/* > * Initialize the vnode associated with a new inode, handle aliased > * vnodes. > */ >@@ -2476,6 +2505,7 @@ struct vop_vector ufs_fifoops = { > .vop_getattr = ufs_getattr, > .vop_inactive = ufs_inactive, > .vop_kqfilter = ufsfifo_kqfilter, >+ .vop_pathconf = ufsfifo_pathconf, > .vop_print = ufs_print, > .vop_read = VOP_PANIC, > .vop_reclaim = ufs_reclaim, >Index: sys/ufs/ffs/ffs_vnops.c >=================================================================== >--- sys/ufs/ffs/ffs_vnops.c (revision 180363) >+++ sys/ufs/ffs/ffs_vnops.c (working copy) >@@ -1337,7 +1337,7 @@ struct vop_openextattr_args { > ip = VTOI(ap->a_vp); > fs = ip->i_fs; > >- if (ap->a_vp->v_type == VCHR) >+ if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK) > return (EOPNOTSUPP); > > return (ffs_open_ea(ap->a_vp, ap->a_cred, ap->a_td)); >@@ -1365,7 +1365,7 @@ struct vop_closeextattr_args { > ip = VTOI(ap->a_vp); > fs = ip->i_fs; > >- if (ap->a_vp->v_type == VCHR) >+ if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK) > return (EOPNOTSUPP); > > if (ap->a_commit && (ap->a_vp->v_mount->mnt_flag & MNT_RDONLY)) >@@ -1399,7 +1399,7 @@ vop_deleteextattr { > ip = VTOI(ap->a_vp); > fs = ip->i_fs; > >- if (ap->a_vp->v_type == VCHR) >+ if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK) > return (EOPNOTSUPP); > > if (strlen(ap->a_name) == 0) >@@ -1489,7 +1489,7 @@ vop_getextattr { > ip = VTOI(ap->a_vp); > fs = ip->i_fs; > >- if (ap->a_vp->v_type == VCHR) >+ if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK) > return (EOPNOTSUPP); > > error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace, >@@ -1549,7 +1549,7 @@ vop_listextattr { > ip = VTOI(ap->a_vp); > fs = ip->i_fs; > >- if (ap->a_vp->v_type == VCHR) >+ if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK) > return (EOPNOTSUPP); > > error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace, >@@ -1619,7 +1619,7 @@ vop_setextattr { > ip = VTOI(ap->a_vp); > fs = ip->i_fs; > >- if (ap->a_vp->v_type == VCHR) >+ if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK) > return (EOPNOTSUPP); > > if (strlen(ap->a_name) == 0)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 125613
: 88773 |
88774