summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2009-06-09 00:46:54 (GMT)
committerAl Viro <viro@zeniv.linux.org.uk>2009-06-24 12:17:05 (GMT)
commite68888bcb60ccba4dc21df9f2d8cd7325b64dce7 (patch)
treebbdf38e109cc6f3533525a88c88b8e570b12ff4d
parentd441b1c293149212045de00f346c8ea6cd41cce4 (diff)
downloadlinux-e68888bcb60ccba4dc21df9f2d8cd7325b64dce7.tar.xz
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: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r--fs/reiserfs/xattr_acl.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/reiserfs/xattr_acl.c b/fs/reiserfs/xattr_acl.c
index c303c42..a1a7e35 100644
--- a/fs/reiserfs/xattr_acl.c
+++ b/fs/reiserfs/xattr_acl.c
@@ -194,7 +194,7 @@ static inline void iset_acl(struct inode *inode, struct posix_acl **i_acl,
spin_lock(&inode->i_lock);
if (*i_acl != ERR_PTR(-ENODATA))
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);
}