aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext4/acl.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ext4/acl.c')
-rw-r--r--fs/ext4/acl.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/fs/ext4/acl.c b/fs/ext4/acl.c
index dca2d1ded931..a5c29bb3b835 100644
--- a/fs/ext4/acl.c
+++ b/fs/ext4/acl.c
@@ -198,12 +198,10 @@ ext4_set_acl(handle_t *handle, struct inode *inode, int type,
198 case ACL_TYPE_ACCESS: 198 case ACL_TYPE_ACCESS:
199 name_index = EXT4_XATTR_INDEX_POSIX_ACL_ACCESS; 199 name_index = EXT4_XATTR_INDEX_POSIX_ACL_ACCESS;
200 if (acl) { 200 if (acl) {
201 mode_t mode = inode->i_mode; 201 error = posix_acl_equiv_mode(acl, &inode->i_mode);
202 error = posix_acl_equiv_mode(acl, &mode);
203 if (error < 0) 202 if (error < 0)
204 return error; 203 return error;
205 else { 204 else {
206 inode->i_mode = mode;
207 inode->i_ctime = ext4_current_time(inode); 205 inode->i_ctime = ext4_current_time(inode);
208 ext4_mark_inode_dirty(handle, inode); 206 ext4_mark_inode_dirty(handle, inode);
209 if (error == 0) 207 if (error == 0)
@@ -259,19 +257,16 @@ ext4_init_acl(handle_t *handle, struct inode *inode, struct inode *dir)
259 inode->i_mode &= ~current_umask(); 257 inode->i_mode &= ~current_umask();
260 } 258 }
261 if (test_opt(inode->i_sb, POSIX_ACL) && acl) { 259 if (test_opt(inode->i_sb, POSIX_ACL) && acl) {
262 mode_t mode = inode->i_mode;
263
264 if (S_ISDIR(inode->i_mode)) { 260 if (S_ISDIR(inode->i_mode)) {
265 error = ext4_set_acl(handle, inode, 261 error = ext4_set_acl(handle, inode,
266 ACL_TYPE_DEFAULT, acl); 262 ACL_TYPE_DEFAULT, acl);
267 if (error) 263 if (error)
268 goto cleanup; 264 goto cleanup;
269 } 265 }
270 error = posix_acl_create(&acl, GFP_NOFS, &mode); 266 error = posix_acl_create(&acl, GFP_NOFS, &inode->i_mode);
271 if (error < 0) 267 if (error < 0)
272 return error; 268 return error;
273 269
274 inode->i_mode = mode;
275 if (error > 0) { 270 if (error > 0) {
276 /* This is an extended ACL */ 271 /* This is an extended ACL */
277 error = ext4_set_acl(handle, inode, ACL_TYPE_ACCESS, acl); 272 error = ext4_set_acl(handle, inode, ACL_TYPE_ACCESS, acl);