提交 e68888bc 编写于 作者: A Al Viro

reiserfs: minimal fix for ACL caching

reiserfs uses NULL as "unknown" and ERR_PTR(-ENODATA) as "no ACL";
several codepaths store the former instead of the latter.

All those codepaths go through iset_acl() and all cases when it's
called with NULL acl are for the second variety, so the minimal
fix is to teach iset_acl() to deal with that.

Proper fix is to switch to more usual conventions and avoid back
and forth between internally used ERR_PTR(-ENODATA) and NULL
expected by the rest of the kernel.
Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
上级 d441b1c2
...@@ -194,7 +194,7 @@ static inline void iset_acl(struct inode *inode, struct posix_acl **i_acl, ...@@ -194,7 +194,7 @@ static inline void iset_acl(struct inode *inode, struct posix_acl **i_acl,
spin_lock(&inode->i_lock); spin_lock(&inode->i_lock);
if (*i_acl != ERR_PTR(-ENODATA)) if (*i_acl != ERR_PTR(-ENODATA))
posix_acl_release(*i_acl); posix_acl_release(*i_acl);
*i_acl = posix_acl_dup(acl); *i_acl = acl ? posix_acl_dup(acl) : ERR_PTR(-ENODATA);
spin_unlock(&inode->i_lock); spin_unlock(&inode->i_lock);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册