mirror of https://github.com/OpenIPC/firmware.git
51 lines
1.4 KiB
Diff
51 lines
1.4 KiB
Diff
diff -drupN a/fs/f2fs/acl.c b/fs/f2fs/acl.c
|
|
--- a/fs/f2fs/acl.c 2018-08-06 17:23:04.000000000 +0300
|
|
+++ b/fs/f2fs/acl.c 2022-06-12 05:28:14.000000000 +0300
|
|
@@ -207,15 +207,16 @@ static int __f2fs_set_acl(struct inode *
|
|
void *value = NULL;
|
|
size_t size = 0;
|
|
int error;
|
|
+ umode_t mode = inode->i_mode;
|
|
|
|
switch (type) {
|
|
case ACL_TYPE_ACCESS:
|
|
name_index = F2FS_XATTR_INDEX_POSIX_ACL_ACCESS;
|
|
if (acl && !ipage) {
|
|
- error = posix_acl_update_mode(inode, &inode->i_mode, &acl);
|
|
+ error = posix_acl_update_mode(inode, &mode, &acl);
|
|
if (error)
|
|
return error;
|
|
- set_acl_inode(inode, inode->i_mode);
|
|
+ set_acl_inode(inode, mode);
|
|
}
|
|
break;
|
|
|
|
@@ -233,7 +234,7 @@ static int __f2fs_set_acl(struct inode *
|
|
value = f2fs_acl_to_disk(F2FS_I_SB(inode), acl, &size);
|
|
if (IS_ERR(value)) {
|
|
clear_inode_flag(inode, FI_ACL_MODE);
|
|
- return (int)PTR_ERR(value);
|
|
+ return PTR_ERR(value);
|
|
}
|
|
}
|
|
|
|
@@ -249,6 +250,9 @@ static int __f2fs_set_acl(struct inode *
|
|
|
|
int f2fs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
|
|
{
|
|
+ if (unlikely(f2fs_cp_error(F2FS_I_SB(inode))))
|
|
+ return -EIO;
|
|
+
|
|
return __f2fs_set_acl(inode, type, acl, NULL);
|
|
}
|
|
|
|
@@ -384,7 +388,7 @@ int f2fs_init_acl(struct inode *inode, s
|
|
if (error)
|
|
return error;
|
|
|
|
- f2fs_mark_inode_dirty_sync(inode);
|
|
+ f2fs_mark_inode_dirty_sync(inode, true);
|
|
|
|
if (default_acl) {
|
|
error = __f2fs_set_acl(inode, ACL_TYPE_DEFAULT, default_acl,
|