[fs/9p] Initialze cached acls both in cached/uncached mode.
authorVenkateswararao Jujjuri (JV) <jvrao@linux.vnet.ibm.com>
Fri, 14 Jan 2011 00:33:00 +0000 (16:33 -0800)
committerEric Van Hensbergen <ericvh@gmail.com>
Tue, 15 Mar 2011 14:57:33 +0000 (09:57 -0500)
With create/mkdir/mknod in non cached mode we initialize the inode using
v9fs_get_inode. v9fs_get_inode doesn't initialize the cache inode value
to NULL.  This is causing to trip on BUG_ON in v9fs_get_cached_acl.
Fix is to initialize acls to NULL and not to leave them in ACL_NOT_CACHED
state.

Signed-off-by: Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com>
Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
fs/9p/acl.c

index 291ff7be27f68104ad6458d845cf30de82f6ab63..0a2e480477a5cc78d84366869652ad385d98f289 100644 (file)
@@ -132,6 +132,10 @@ static int v9fs_set_acl(struct dentry *dentry, int type, struct posix_acl *acl)
        struct inode *inode = dentry->d_inode;
 
        set_cached_acl(inode, type, acl);
+
+       if (!acl)
+               return 0;
+
        /* Set a setxattr request to server */
        size = posix_acl_xattr_size(acl->a_count);
        buffer = kmalloc(size, GFP_KERNEL);
@@ -181,10 +185,8 @@ int v9fs_acl_chmod(struct dentry *dentry)
 int v9fs_set_create_acl(struct dentry *dentry,
                        struct posix_acl *dpacl, struct posix_acl *pacl)
 {
-       if (dpacl)
-               v9fs_set_acl(dentry, ACL_TYPE_DEFAULT, dpacl);
-       if (pacl)
-               v9fs_set_acl(dentry, ACL_TYPE_ACCESS, pacl);
+       v9fs_set_acl(dentry, ACL_TYPE_DEFAULT, dpacl);
+       v9fs_set_acl(dentry, ACL_TYPE_ACCESS, pacl);
        posix_acl_release(dpacl);
        posix_acl_release(pacl);
        return 0;