aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMister Oyster <oysterized@gmail.com>2017-05-29 02:54:17 +0200
committerMister Oyster <oysterized@gmail.com>2017-05-29 03:52:17 +0200
commit80f8d49418818d267bd3faefa520c404c1a4f7d6 (patch)
treefb500f9e4a56eb5ddcc129d5f18a0268ca1aa520
parentcacd1e12066f4a859bc57d4e5383c3502e9bb8db (diff)
ext4: fix BACKPORT: posix_acl: Clear SGID bit when setting file permissions
-rw-r--r--fs/ext4/acl.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/fs/ext4/acl.c b/fs/ext4/acl.c
index d40c8dbbb..87d9bbf6a 100644
--- a/fs/ext4/acl.c
+++ b/fs/ext4/acl.c
@@ -201,15 +201,11 @@ __ext4_set_acl(handle_t *handle, struct inode *inode, int type,
case ACL_TYPE_ACCESS:
name_index = EXT4_XATTR_INDEX_POSIX_ACL_ACCESS;
if (acl) {
- error = posix_acl_equiv_mode(acl, &inode->i_mode);
- if (error < 0)
+ error = posix_acl_update_mode(inode, &inode->i_mode, &acl);
+ if (error)
return error;
- else {
- inode->i_ctime = ext4_current_time(inode);
- ext4_mark_inode_dirty(handle, inode);
- if (error == 0)
- acl = NULL;
- }
+ inode->i_ctime = ext4_current_time(inode);
+ ext4_mark_inode_dirty(handle, inode);
}
break;