summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormm <mm@FreeBSD.org>2012-11-22 06:45:28 +0000
committermm <mm@FreeBSD.org>2012-11-22 06:45:28 +0000
commit9fbb4e52417d3a6753dcd43c138cab41287b8bf4 (patch)
tree7d79fad6b90fce12b1832177bb7fd0365b3b13e3
parent08e2fe94c1fd972f615f3f2005adbd00bb9dd5c3 (diff)
downloadFreeBSD-src-9fbb4e52417d3a6753dcd43c138cab41287b8bf4.zip
FreeBSD-src-9fbb4e52417d3a6753dcd43c138cab41287b8bf4.tar.gz
Update vendor/illumos/dist and vendor-sys/illumos/dist
to illumos-gate 13889:a67716f16746 (illumos zfs issue #3254)
-rw-r--r--common/zfs/zfs_prop.c4
-rw-r--r--uts/common/fs/zfs/zfs_vnops.c6
2 files changed, 9 insertions, 1 deletions
diff --git a/common/zfs/zfs_prop.c b/common/zfs/zfs_prop.c
index 5d45361..4f79836 100644
--- a/common/zfs/zfs_prop.c
+++ b/common/zfs/zfs_prop.c
@@ -109,6 +109,7 @@ zfs_prop_init(void)
{ "discard", ZFS_ACL_DISCARD },
{ "groupmask", ZFS_ACL_GROUPMASK },
{ "passthrough", ZFS_ACL_PASSTHROUGH },
+ { "restricted", ZFS_ACL_RESTRICTED },
{ NULL }
};
@@ -217,7 +218,8 @@ zfs_prop_init(void)
"hidden | visible", "SNAPDIR", snapdir_table);
zprop_register_index(ZFS_PROP_ACLMODE, "aclmode", ZFS_ACL_DISCARD,
PROP_INHERIT, ZFS_TYPE_FILESYSTEM,
- "discard | groupmask | passthrough", "ACLMODE", acl_mode_table);
+ "discard | groupmask | passthrough | restricted", "ACLMODE",
+ acl_mode_table);
zprop_register_index(ZFS_PROP_ACLINHERIT, "aclinherit",
ZFS_ACL_RESTRICTED, PROP_INHERIT, ZFS_TYPE_FILESYSTEM,
"discard | noallow | restricted | passthrough | passthrough-x",
diff --git a/uts/common/fs/zfs/zfs_vnops.c b/uts/common/fs/zfs/zfs_vnops.c
index 21350a1..de7812f 100644
--- a/uts/common/fs/zfs/zfs_vnops.c
+++ b/uts/common/fs/zfs/zfs_vnops.c
@@ -2982,6 +2982,12 @@ top:
uint64_t acl_obj;
new_mode = (pmode & S_IFMT) | (vap->va_mode & ~S_IFMT);
+ if (zp->z_zfsvfs->z_acl_mode == ZFS_ACL_RESTRICTED &&
+ !(zp->z_pflags & ZFS_ACL_TRIVIAL)) {
+ err = EPERM;
+ goto out;
+ }
+
if (err = zfs_acl_chmod_setattr(zp, &aclp, new_mode))
goto out;
OpenPOWER on IntegriCloud