diff options
| author | Takashi Iwai <[email protected]> | 2017-11-01 16:43:20 +0000 |
|---|---|---|
| committer | Takashi Iwai <[email protected]> | 2017-11-01 16:43:20 +0000 |
| commit | a53a0ab8ff725672fcb47bb9a5ef75fce45679d0 (patch) | |
| tree | 75cdea78f27fdd569d72cea0b7837bbcc8d871f7 /fs/xfs/xfs_acl.c | |
| parent | ALSA: seq: Fix nested rwsem annotation for lockdep splat (diff) | |
| parent | Merge remote-tracking branches 'asoc/fix/topology', 'asoc/fix/adau17x1', 'aso... (diff) | |
| download | kernel-a53a0ab8ff725672fcb47bb9a5ef75fce45679d0.tar.gz kernel-a53a0ab8ff725672fcb47bb9a5ef75fce45679d0.zip | |
Merge tag 'asoc-fix-v4.14-rc7' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v4.14
A bunch of fixes here, mostly device specific ones (the biggest one
being the revert of the hotword support for rt5514), with a couple of
core fixes for potential issues with corrupted or otherwise invalid
topology files.
Diffstat (limited to 'fs/xfs/xfs_acl.c')
| -rw-r--r-- | fs/xfs/xfs_acl.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/fs/xfs/xfs_acl.c b/fs/xfs/xfs_acl.c index 7034e17535de..3354140de07e 100644 --- a/fs/xfs/xfs_acl.c +++ b/fs/xfs/xfs_acl.c @@ -247,6 +247,8 @@ xfs_set_mode(struct inode *inode, umode_t mode) int xfs_set_acl(struct inode *inode, struct posix_acl *acl, int type) { + umode_t mode; + bool set_mode = false; int error = 0; if (!acl) @@ -257,16 +259,24 @@ xfs_set_acl(struct inode *inode, struct posix_acl *acl, int type) return error; if (type == ACL_TYPE_ACCESS) { - umode_t mode; - error = posix_acl_update_mode(inode, &mode, &acl); if (error) return error; - error = xfs_set_mode(inode, mode); - if (error) - return error; + set_mode = true; } set_acl: - return __xfs_set_acl(inode, acl, type); + error = __xfs_set_acl(inode, acl, type); + if (error) + return error; + + /* + * We set the mode after successfully updating the ACL xattr because the + * xattr update can fail at ENOSPC and we don't want to change the mode + * if the ACL update hasn't been applied. + */ + if (set_mode) + error = xfs_set_mode(inode, mode); + + return error; } |
