提交 d344b0fb 编写于 作者: V Venkateswararao Jujjuri (JV) 提交者: Eric Van Hensbergen

[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: NVenkateswararao Jujjuri <jvrao@linux.vnet.ibm.com>
Signed-off-by: NEric Van Hensbergen <ericvh@gmail.com>
Reviewed-by: NAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
上级 c61fa0d6
...@@ -132,6 +132,10 @@ static int v9fs_set_acl(struct dentry *dentry, int type, struct posix_acl *acl) ...@@ -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) ...@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册