aboutsummaryrefslogtreecommitdiffstats
path: root/fs/reiserfs/xattr.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/reiserfs/xattr.c')
-rw-r--r--fs/reiserfs/xattr.c36
1 files changed, 3 insertions, 33 deletions
diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c
index d7808969096..6bc346c160e 100644
--- a/fs/reiserfs/xattr.c
+++ b/fs/reiserfs/xattr.c
@@ -555,11 +555,10 @@ reiserfs_xattr_set_handle(struct reiserfs_transaction_handle *th,
555 555
556 reiserfs_write_unlock(inode->i_sb); 556 reiserfs_write_unlock(inode->i_sb);
557 mutex_lock_nested(&dentry->d_inode->i_mutex, I_MUTEX_XATTR); 557 mutex_lock_nested(&dentry->d_inode->i_mutex, I_MUTEX_XATTR);
558 down_write(&dentry->d_inode->i_alloc_sem); 558 inode_dio_wait(dentry->d_inode);
559 reiserfs_write_lock(inode->i_sb); 559 reiserfs_write_lock(inode->i_sb);
560 560
561 err = reiserfs_setattr(dentry, &newattrs); 561 err = reiserfs_setattr(dentry, &newattrs);
562 up_write(&dentry->d_inode->i_alloc_sem);
563 mutex_unlock(&dentry->d_inode->i_mutex); 562 mutex_unlock(&dentry->d_inode->i_mutex);
564 } else 563 } else
565 update_ctime(inode); 564 update_ctime(inode);
@@ -868,27 +867,6 @@ out:
868 return err; 867 return err;
869} 868}
870 869
871static int reiserfs_check_acl(struct inode *inode, int mask, unsigned int flags)
872{
873 struct posix_acl *acl;
874 int error = -EAGAIN; /* do regular unix permission checks by default */
875
876 if (flags & IPERM_FLAG_RCU)
877 return -ECHILD;
878
879 acl = reiserfs_get_acl(inode, ACL_TYPE_ACCESS);
880
881 if (acl) {
882 if (!IS_ERR(acl)) {
883 error = posix_acl_permission(inode, acl, mask);
884 posix_acl_release(acl);
885 } else if (PTR_ERR(acl) != -ENODATA)
886 error = PTR_ERR(acl);
887 }
888
889 return error;
890}
891
892static int create_privroot(struct dentry *dentry) 870static int create_privroot(struct dentry *dentry)
893{ 871{
894 int err; 872 int err;
@@ -952,7 +930,7 @@ static int xattr_mount_check(struct super_block *s)
952 return 0; 930 return 0;
953} 931}
954 932
955int reiserfs_permission(struct inode *inode, int mask, unsigned int flags) 933int reiserfs_permission(struct inode *inode, int mask)
956{ 934{
957 /* 935 /*
958 * We don't do permission checks on the internal objects. 936 * We don't do permission checks on the internal objects.
@@ -961,15 +939,7 @@ int reiserfs_permission(struct inode *inode, int mask, unsigned int flags)
961 if (IS_PRIVATE(inode)) 939 if (IS_PRIVATE(inode))
962 return 0; 940 return 0;
963 941
964#ifdef CONFIG_REISERFS_FS_XATTR 942 return generic_permission(inode, mask);
965 /*
966 * Stat data v1 doesn't support ACLs.
967 */
968 if (get_inode_sd_version(inode) != STAT_DATA_V1)
969 return generic_permission(inode, mask, flags,
970 reiserfs_check_acl);
971#endif
972 return generic_permission(inode, mask, flags, NULL);
973} 943}
974 944
975static int xattr_hide_revalidate(struct dentry *dentry, struct nameidata *nd) 945static int xattr_hide_revalidate(struct dentry *dentry, struct nameidata *nd)