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 <behlendorf1@llnl.gov> Signed-off-by: Matt Macy <mmacy@FreeBSD.org> Closes #9541
This commit is contained in:
parent
c4ae27c763
commit
156f74fc03
|
@ -220,7 +220,7 @@ int zfs_fastaccesschk_execute(struct znode *, cred_t *);
|
|||
extern int zfs_zaccess_rwx(struct znode *, mode_t, int, cred_t *);
|
||||
extern int zfs_zaccess_unix(struct znode *, mode_t, cred_t *);
|
||||
extern int zfs_acl_access(struct znode *, int, cred_t *);
|
||||
void zfs_acl_chmod_setattr(struct znode *, zfs_acl_t **, uint64_t);
|
||||
int zfs_acl_chmod_setattr(struct znode *, zfs_acl_t **, uint64_t);
|
||||
int zfs_zaccess_delete(struct znode *, struct znode *, cred_t *);
|
||||
int zfs_zaccess_rename(struct znode *, struct znode *,
|
||||
struct znode *, struct znode *, cred_t *cr);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -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)) {
|
||||
|
|
Loading…
Reference in New Issue