diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2009-06-08 20:46:54 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2009-06-24 08:17:05 -0400 |
commit | e68888bcb60ccba4dc21df9f2d8cd7325b64dce7 (patch) | |
tree | bbdf38e109cc6f3533525a88c88b8e570b12ff4d /fs/reiserfs | |
parent | d441b1c293149212045de00f346c8ea6cd41cce4 (diff) |
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>
Diffstat (limited to 'fs/reiserfs')
-rw-r--r-- | fs/reiserfs/xattr_acl.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/reiserfs/xattr_acl.c b/fs/reiserfs/xattr_acl.c index c303c426fe2b..a1a7e3530e17 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, | |||
194 | spin_lock(&inode->i_lock); | 194 | spin_lock(&inode->i_lock); |
195 | if (*i_acl != ERR_PTR(-ENODATA)) | 195 | if (*i_acl != ERR_PTR(-ENODATA)) |
196 | posix_acl_release(*i_acl); | 196 | posix_acl_release(*i_acl); |
197 | *i_acl = posix_acl_dup(acl); | 197 | *i_acl = acl ? posix_acl_dup(acl) : ERR_PTR(-ENODATA); |
198 | spin_unlock(&inode->i_lock); | 198 | spin_unlock(&inode->i_lock); |
199 | } | 199 | } |
200 | 200 | ||