diff options
author | Martin Matuska <mm@FreeBSD.org> | 2021-09-15 15:30:07 +0000 |
---|---|---|
committer | Martin Matuska <mm@FreeBSD.org> | 2021-09-15 15:30:53 +0000 |
commit | 53b70c86d93c1e4d3c76f1282e94154e88780d7e (patch) | |
tree | 7de40c23766ddb80ad4b37a1140b302dbe96a92f /sys/contrib/openzfs/module/os/linux | |
parent | 6e8272f317b899438165108a72fa04a4995611bd (diff) | |
parent | 4a1195ca5041cbff2a6b025a31937fef84876c52 (diff) | |
download | src-53b70c86d93c1e4d3c76f1282e94154e88780d7e.tar.gz src-53b70c86d93c1e4d3c76f1282e94154e88780d7e.zip |
Diffstat (limited to 'sys/contrib/openzfs/module/os/linux')
-rw-r--r-- | sys/contrib/openzfs/module/os/linux/zfs/zfs_acl.c | 4 | ||||
-rw-r--r-- | sys/contrib/openzfs/module/os/linux/zfs/zfs_znode.c | 2 | ||||
-rw-r--r-- | sys/contrib/openzfs/module/os/linux/zfs/zpl_xattr.c | 34 |
3 files changed, 29 insertions, 11 deletions
diff --git a/sys/contrib/openzfs/module/os/linux/zfs/zfs_acl.c b/sys/contrib/openzfs/module/os/linux/zfs/zfs_acl.c index 1233c32deac1..cf37aecf8a22 100644 --- a/sys/contrib/openzfs/module/os/linux/zfs/zfs_acl.c +++ b/sys/contrib/openzfs/module/os/linux/zfs/zfs_acl.c @@ -269,7 +269,7 @@ zfs_ace_fuid_size(void *acep) entry_type == OWNING_GROUP || entry_type == ACE_EVERYONE) return (sizeof (zfs_ace_hdr_t)); - /* FALLTHROUGH */ + fallthrough; default: return (sizeof (zfs_ace_t)); } @@ -2317,7 +2317,7 @@ zfs_zaccess_aces_check(znode_t *zp, uint32_t *working_mode, break; case OWNING_GROUP: who = gowner; - /* FALLTHROUGH */ + fallthrough; case ACE_IDENTIFIER_GROUP: checkit = zfs_groupmember(zfsvfs, who, cr); break; diff --git a/sys/contrib/openzfs/module/os/linux/zfs/zfs_znode.c b/sys/contrib/openzfs/module/os/linux/zfs/zfs_znode.c index 6859832ab81c..859c51baffd8 100644 --- a/sys/contrib/openzfs/module/os/linux/zfs/zfs_znode.c +++ b/sys/contrib/openzfs/module/os/linux/zfs/zfs_znode.c @@ -430,7 +430,7 @@ zfs_inode_set_ops(zfsvfs_t *zfsvfs, struct inode *ip) case S_IFBLK: (void) sa_lookup(ITOZ(ip)->z_sa_hdl, SA_ZPL_RDEV(zfsvfs), &rdev, sizeof (rdev)); - /* FALLTHROUGH */ + fallthrough; case S_IFIFO: case S_IFSOCK: init_special_inode(ip, ip->i_mode, rdev); diff --git a/sys/contrib/openzfs/module/os/linux/zfs/zpl_xattr.c b/sys/contrib/openzfs/module/os/linux/zfs/zpl_xattr.c index 66f197e4c77a..e7726e8458af 100644 --- a/sys/contrib/openzfs/module/os/linux/zfs/zpl_xattr.c +++ b/sys/contrib/openzfs/module/os/linux/zfs/zpl_xattr.c @@ -1012,13 +1012,12 @@ zpl_set_acl(struct inode *ip, struct posix_acl *acl, int type) } #endif /* HAVE_SET_ACL */ -struct posix_acl * -zpl_get_acl(struct inode *ip, int type) +static struct posix_acl * +zpl_get_acl_impl(struct inode *ip, int type) { struct posix_acl *acl; void *value = NULL; char *name; - int size; /* * As of Linux 3.14, the kernel get_acl will check this for us. @@ -1042,7 +1041,7 @@ zpl_get_acl(struct inode *ip, int type) return (ERR_PTR(-EINVAL)); } - size = zpl_xattr_get(ip, name, NULL, 0); + int size = zpl_xattr_get(ip, name, NULL, 0); if (size > 0) { value = kmem_alloc(size, KM_SLEEP); size = zpl_xattr_get(ip, name, value, size); @@ -1068,6 +1067,25 @@ zpl_get_acl(struct inode *ip, int type) return (acl); } +#if defined(HAVE_GET_ACL_RCU) +struct posix_acl * +zpl_get_acl(struct inode *ip, int type, bool rcu) +{ + if (rcu) + return (ERR_PTR(-ECHILD)); + + return (zpl_get_acl_impl(ip, type)); +} +#elif defined(HAVE_GET_ACL) +struct posix_acl * +zpl_get_acl(struct inode *ip, int type) +{ + return (zpl_get_acl_impl(ip, type)); +} +#else +#error "Unsupported iops->get_acl() implementation" +#endif /* HAVE_GET_ACL_RCU */ + int zpl_init_acl(struct inode *ip, struct inode *dir) { @@ -1078,7 +1096,7 @@ zpl_init_acl(struct inode *ip, struct inode *dir) return (0); if (!S_ISLNK(ip->i_mode)) { - acl = zpl_get_acl(dir, ACL_TYPE_DEFAULT); + acl = zpl_get_acl_impl(dir, ACL_TYPE_DEFAULT); if (IS_ERR(acl)) return (PTR_ERR(acl)); if (!acl) { @@ -1127,7 +1145,7 @@ zpl_chmod_acl(struct inode *ip) if (S_ISLNK(ip->i_mode)) return (-EOPNOTSUPP); - acl = zpl_get_acl(ip, ACL_TYPE_ACCESS); + acl = zpl_get_acl_impl(ip, ACL_TYPE_ACCESS); if (IS_ERR(acl) || !acl) return (PTR_ERR(acl)); @@ -1189,7 +1207,7 @@ __zpl_xattr_acl_get_access(struct inode *ip, const char *name, if (ITOZSB(ip)->z_acl_type != ZFS_ACLTYPE_POSIX) return (-EOPNOTSUPP); - acl = zpl_get_acl(ip, type); + acl = zpl_get_acl_impl(ip, type); if (IS_ERR(acl)) return (PTR_ERR(acl)); if (acl == NULL) @@ -1217,7 +1235,7 @@ __zpl_xattr_acl_get_default(struct inode *ip, const char *name, if (ITOZSB(ip)->z_acl_type != ZFS_ACLTYPE_POSIX) return (-EOPNOTSUPP); - acl = zpl_get_acl(ip, type); + acl = zpl_get_acl_impl(ip, type); if (IS_ERR(acl)) return (PTR_ERR(acl)); if (acl == NULL) |