[CIFS] Do not send Query All EAs SMB when mount option nouser_xattr
authorSteve French <sfrench@us.ibm.com>
Wed, 16 Aug 2006 19:44:25 +0000 (19:44 +0000)
committerSteve French <sfrench@us.ibm.com>
Wed, 16 Aug 2006 19:44:25 +0000 (19:44 +0000)
specified

Pointed out by Bjoern Jacke

Signed-off-by: Steve French <sfrench@us.ibm.com>
fs/cifs/CHANGES
fs/cifs/README
fs/cifs/xattr.c

index bd37727526eafa81718bd03fd99d2a1efa5455d3..0feb3bd49cb85160efb5275ef9c8c2590683408f 100644 (file)
@@ -5,7 +5,8 @@ time out requests if server still responding reasonably fast
 on requests on other threads.  Improve POSIX locking emulation,
 (lock cancel now works, and unlock of merged range works even
 to Windows servers now).  Fix oops on mount to lanman servers
-(win9x, os/2 etc.) when null password.
+(win9x, os/2 etc.) when null password.  Do not send listxattr
+(SMB to query all EAs) if nouser_xattr specified.
 
 Version 1.44
 ------------
index 7986d0d97ace4f97b3b3d10b0800d03fcaabb631..5f0e1bd64feee801b65e895075fcca5972540d8f 100644 (file)
@@ -408,7 +408,7 @@ A partial list of the supported mount options follows:
   user_xattr    Allow getting and setting user xattrs as OS/2 EAs (extended
                attributes) to the server (default) e.g. via setfattr 
                and getfattr utilities. 
-  nouser_xattr  Do not allow getfattr/setfattr to get/set xattrs 
+  nouser_xattr  Do not allow getfattr/setfattr to get/set/list xattrs 
   mapchars      Translate six of the seven reserved characters (not backslash)
                        *?<>|:
                to the remap range (above 0xF000), which also
index 7754d641775eb9e24e3535158b047e54c1b0217a..067648b7179b5b6b7ad390c406ff8233b9bdea78 100644 (file)
@@ -330,11 +330,15 @@ 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();
+
        full_path = build_path_from_dentry(direntry);
        if(full_path == NULL) {
                FreeXid(xid);