[fs/9p] Initialze cached acls both in cached/uncached mode.
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>
This commit is contained in:
committed by
Eric Van Hensbergen
parent
c61fa0d6d9
commit
d344b0fb72
10
fs/9p/acl.c
10
fs/9p/acl.c
@@ -132,6 +132,10 @@ static int v9fs_set_acl(struct dentry *dentry, int type, struct posix_acl *acl)
|
|||||||
struct inode *inode = dentry->d_inode;
|
struct inode *inode = dentry->d_inode;
|
||||||
|
|
||||||
set_cached_acl(inode, type, acl);
|
set_cached_acl(inode, type, acl);
|
||||||
|
|
||||||
|
if (!acl)
|
||||||
|
return 0;
|
||||||
|
|
||||||
/* Set a setxattr request to server */
|
/* Set a setxattr request to server */
|
||||||
size = posix_acl_xattr_size(acl->a_count);
|
size = posix_acl_xattr_size(acl->a_count);
|
||||||
buffer = kmalloc(size, GFP_KERNEL);
|
buffer = kmalloc(size, GFP_KERNEL);
|
||||||
@@ -181,10 +185,8 @@ int v9fs_acl_chmod(struct dentry *dentry)
|
|||||||
int v9fs_set_create_acl(struct dentry *dentry,
|
int v9fs_set_create_acl(struct dentry *dentry,
|
||||||
struct posix_acl *dpacl, struct posix_acl *pacl)
|
struct posix_acl *dpacl, struct posix_acl *pacl)
|
||||||
{
|
{
|
||||||
if (dpacl)
|
v9fs_set_acl(dentry, ACL_TYPE_DEFAULT, dpacl);
|
||||||
v9fs_set_acl(dentry, ACL_TYPE_DEFAULT, dpacl);
|
v9fs_set_acl(dentry, ACL_TYPE_ACCESS, pacl);
|
||||||
if (pacl)
|
|
||||||
v9fs_set_acl(dentry, ACL_TYPE_ACCESS, pacl);
|
|
||||||
posix_acl_release(dpacl);
|
posix_acl_release(dpacl);
|
||||||
posix_acl_release(pacl);
|
posix_acl_release(pacl);
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user