f2fs: cache NULL when both default_acl and acl are NULL
authorChengguang Xu <cgxu519@gmx.com>
Fri, 31 Aug 2018 14:33:50 +0000 (22:33 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 11 Sep 2018 20:16:03 +0000 (13:16 -0700)
default_acl and acl of newly created inode will be initiated
as ACL_NOT_CACHED in vfs function inode_init_always() and later
will be updated by calling xxx_init_acl() in specific filesystems.
Howerver, when default_acl and acl are NULL then they keep the value
of ACL_NOT_CACHED, this patch tries to cache NULL for acl/default_acl
in this case.

Signed-off-by: Chengguang Xu <cgxu519@gmx.com>
Acked-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/acl.c

index 20caf34..cd82e1c 100644 (file)
@@ -397,12 +397,16 @@ int f2fs_init_acl(struct inode *inode, struct inode *dir, struct page *ipage,
                error = __f2fs_set_acl(inode, ACL_TYPE_DEFAULT, default_acl,
                                       ipage);
                posix_acl_release(default_acl);
+       } else {
+               inode->i_default_acl = NULL;
        }
        if (acl) {
                if (!error)
                        error = __f2fs_set_acl(inode, ACL_TYPE_ACCESS, acl,
                                               ipage);
                posix_acl_release(acl);
+       } else {
+               inode->i_acl = NULL;
        }
 
        return error;