diff options
author | Matthew Macy <[email protected]> | 2019-11-01 10:19:11 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2019-11-01 10:19:11 -0700 |
commit | 156f74fc03d6187017a695c6c84a03f650f626b4 (patch) | |
tree | c8fb31d19f5a4330f2e2709ae9c78fac5218e99a /module | |
parent | c4ae27c763acc2b29747e98a4318be9516c43e70 (diff) |
Return an error code from zfs_acl_chmod_setattr
The FreeBSD implementation can fail, allow this function to
fail and add the required error handling for Linux.
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Matt Macy <[email protected]>
Closes #9541
Diffstat (limited to 'module')
-rw-r--r-- | module/os/linux/zfs/zfs_acl.c | 4 | ||||
-rw-r--r-- | module/os/linux/zfs/zfs_vnops.c | 3 |
2 files changed, 5 insertions, 2 deletions
diff --git a/module/os/linux/zfs/zfs_acl.c b/module/os/linux/zfs/zfs_acl.c index b53bd3556..67efee175 100644 --- a/module/os/linux/zfs/zfs_acl.c +++ b/module/os/linux/zfs/zfs_acl.c @@ -1570,7 +1570,7 @@ zfs_acl_chmod(zfsvfs_t *zfsvfs, uint64_t mode, zfs_acl_t *aclp) list_insert_tail(&aclp->z_acl, newnode); } -void +int zfs_acl_chmod_setattr(znode_t *zp, zfs_acl_t **aclp, uint64_t mode) { mutex_enter(&zp->z_acl_lock); @@ -1581,6 +1581,8 @@ zfs_acl_chmod_setattr(znode_t *zp, zfs_acl_t **aclp, uint64_t mode) mutex_exit(&zp->z_lock); mutex_exit(&zp->z_acl_lock); ASSERT(*aclp); + + return (0); } /* diff --git a/module/os/linux/zfs/zfs_vnops.c b/module/os/linux/zfs/zfs_vnops.c index 03a8c4a50..41da7378b 100644 --- a/module/os/linux/zfs/zfs_vnops.c +++ b/module/os/linux/zfs/zfs_vnops.c @@ -3252,7 +3252,8 @@ top: uint64_t acl_obj; new_mode = (pmode & S_IFMT) | (vap->va_mode & ~S_IFMT); - zfs_acl_chmod_setattr(zp, &aclp, new_mode); + if ((err = zfs_acl_chmod_setattr(zp, &aclp, new_mode))) + goto out; mutex_enter(&zp->z_lock); if (!zp->z_is_sa && ((acl_obj = zfs_external_acl(zp)) != 0)) { |