9p: lift the call of set_cached_acl() into the callers of v9fs_set_acl()
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 31 Jan 2013 17:46:55 +0000 (12:46 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 26 Feb 2013 07:46:05 +0000 (02:46 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/9p/acl.c

index 15b6791..c5d8cd6 100644 (file)
@@ -119,10 +119,6 @@ static int v9fs_set_acl(struct dentry *dentry, int type, struct posix_acl *acl)
        char *name;
        size_t size;
        void *buffer;
-       struct inode *inode = dentry->d_inode;
-
-       set_cached_acl(inode, type, acl);
-
        if (!acl)
                return 0;
 
@@ -163,6 +159,7 @@ int v9fs_acl_chmod(struct dentry *dentry)
                retval = posix_acl_chmod(&acl, GFP_KERNEL, inode->i_mode);
                if (retval)
                        return retval;
+               set_cached_acl(inode, ACL_TYPE_ACCESS, acl);
                retval = v9fs_set_acl(dentry, ACL_TYPE_ACCESS, acl);
                posix_acl_release(acl);
        }
@@ -173,7 +170,9 @@ int v9fs_set_create_acl(struct dentry *dentry,
                        struct posix_acl **dpacl, struct posix_acl **pacl)
 {
        if (dentry) {
+               set_cached_acl(dentry->d_inode, ACL_TYPE_DEFAULT, *dpacl);
                v9fs_set_acl(dentry, ACL_TYPE_DEFAULT, *dpacl);
+               set_cached_acl(dentry->d_inode, ACL_TYPE_ACCESS, *pacl);
                v9fs_set_acl(dentry, ACL_TYPE_ACCESS, *pacl);
        }
        posix_acl_release(*dpacl);