X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fcifs%2Fxattr.c;fp=fs%2Fcifs%2Fxattr.c;h=777e3363c2a4dd95ec3c05f51678ae3810369229;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=067648b7179b5b6b7ad390c406ff8233b9bdea78;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/fs/cifs/xattr.c b/fs/cifs/xattr.c index 067648b71..777e3363c 100644 --- a/fs/cifs/xattr.c +++ b/fs/cifs/xattr.c @@ -62,7 +62,9 @@ int cifs_removexattr(struct dentry * direntry, const char * ea_name) cifs_sb = CIFS_SB(sb); pTcon = cifs_sb->tcon; + down(&sb->s_vfs_rename_sem); full_path = build_path_from_dentry(direntry); + up(&sb->s_vfs_rename_sem); if(full_path == NULL) { FreeXid(xid); return -ENOMEM; @@ -114,7 +116,9 @@ int cifs_setxattr(struct dentry * direntry, const char * ea_name, cifs_sb = CIFS_SB(sb); pTcon = cifs_sb->tcon; + down(&sb->s_vfs_rename_sem); full_path = build_path_from_dentry(direntry); + up(&sb->s_vfs_rename_sem); if(full_path == NULL) { FreeXid(xid); return -ENOMEM; @@ -219,7 +223,9 @@ ssize_t cifs_getxattr(struct dentry * direntry, const char * ea_name, cifs_sb = CIFS_SB(sb); pTcon = cifs_sb->tcon; + down(&sb->s_vfs_rename_sem); full_path = build_path_from_dentry(direntry); + up(&sb->s_vfs_rename_sem); if(full_path == NULL) { FreeXid(xid); return -ENOMEM; @@ -330,16 +336,14 @@ ssize_t cifs_listxattr(struct dentry * direntry, char * data, size_t buf_size) sb = direntry->d_inode->i_sb; if(sb == NULL) return -EIO; + xid = GetXid(); cifs_sb = CIFS_SB(sb); pTcon = cifs_sb->tcon; - if(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_XATTR) - return -EOPNOTSUPP; - - xid = GetXid(); - + down(&sb->s_vfs_rename_sem); full_path = build_path_from_dentry(direntry); + up(&sb->s_vfs_rename_sem); if(full_path == NULL) { FreeXid(xid); return -ENOMEM;