aboutsummaryrefslogtreecommitdiffstats
path: root/fs/reiserfs
diff options
context:
space:
mode:
Diffstat (limited to 'fs/reiserfs')
-rw-r--r--fs/reiserfs/xattr.c30
1 files changed, 8 insertions, 22 deletions
diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c
index 4f0db4e54517..2f085845f670 100644
--- a/fs/reiserfs/xattr.c
+++ b/fs/reiserfs/xattr.c
@@ -1319,9 +1319,7 @@ int reiserfs_xattr_init(struct super_block *s, int mount_flags)
1319 return err; 1319 return err;
1320} 1320}
1321 1321
1322static int 1322int reiserfs_permission(struct inode *inode, int mask, struct nameidata *nd)
1323__reiserfs_permission(struct inode *inode, int mask, struct nameidata *nd,
1324 int need_lock)
1325{ 1323{
1326 umode_t mode = inode->i_mode; 1324 umode_t mode = inode->i_mode;
1327 1325
@@ -1357,15 +1355,14 @@ __reiserfs_permission(struct inode *inode, int mask, struct nameidata *nd,
1357 if (!(mode & S_IRWXG)) 1355 if (!(mode & S_IRWXG))
1358 goto check_groups; 1356 goto check_groups;
1359 1357
1360 if (need_lock) { 1358 reiserfs_read_lock_xattr_i(inode);
1361 reiserfs_read_lock_xattr_i(inode); 1359 reiserfs_read_lock_xattrs(inode->i_sb);
1362 reiserfs_read_lock_xattrs(inode->i_sb); 1360
1363 }
1364 acl = reiserfs_get_acl(inode, ACL_TYPE_ACCESS); 1361 acl = reiserfs_get_acl(inode, ACL_TYPE_ACCESS);
1365 if (need_lock) { 1362
1366 reiserfs_read_unlock_xattrs(inode->i_sb); 1363 reiserfs_read_unlock_xattrs(inode->i_sb);
1367 reiserfs_read_unlock_xattr_i(inode); 1364 reiserfs_read_unlock_xattr_i(inode);
1368 } 1365
1369 if (IS_ERR(acl)) { 1366 if (IS_ERR(acl)) {
1370 if (PTR_ERR(acl) == -ENODATA) 1367 if (PTR_ERR(acl) == -ENODATA)
1371 goto check_groups; 1368 goto check_groups;
@@ -1414,14 +1411,3 @@ __reiserfs_permission(struct inode *inode, int mask, struct nameidata *nd,
1414 1411
1415 return -EACCES; 1412 return -EACCES;
1416} 1413}
1417
1418int reiserfs_permission(struct inode *inode, int mask, struct nameidata *nd)
1419{
1420 return __reiserfs_permission(inode, mask, nd, 1);
1421}
1422
1423int
1424reiserfs_permission_locked(struct inode *inode, int mask, struct nameidata *nd)
1425{
1426 return __reiserfs_permission(inode, mask, nd, 0);
1427}