Commit 1da0c78b authored by Steve French's avatar Steve French Committed by Linus Torvalds
Browse files

[PATCH] cifs: Only send POSIX ACL calls to server if server claims to support that capability bit

parent 2604f6da
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -161,18 +161,20 @@ int cifs_setxattr(struct dentry * direntry, const char * ea_name,
			strlen(POSIX_ACL_XATTR_ACCESS));
		if (temp == 0) {
#ifdef CONFIG_CIFS_POSIX
			rc = CIFSSMBSetPosixACL(xid, pTcon,full_path,ea_value,
				(const int)value_size, ACL_TYPE_ACCESS,
				cifs_sb->local_nls);
			if(sb->s_flags & MS_POSIXACL)
				rc = CIFSSMBSetPosixACL(xid, pTcon,full_path,
					ea_value, (const int)value_size, 
					ACL_TYPE_ACCESS,cifs_sb->local_nls);
			cFYI(1,("set POSIX ACL rc %d",rc));
#else
			cFYI(1,("set POSIX ACL not supported"));
#endif
		} else if(strncmp(ea_name,POSIX_ACL_XATTR_DEFAULT,strlen(POSIX_ACL_XATTR_DEFAULT)) == 0) {
#ifdef CONFIG_CIFS_POSIX
			rc = CIFSSMBSetPosixACL(xid, pTcon,full_path,ea_value,
				(const int)value_size, ACL_TYPE_DEFAULT,
				cifs_sb->local_nls);
			if(sb->s_flags & MS_POSIXACL)
				rc = CIFSSMBSetPosixACL(xid, pTcon,full_path,
					ea_value, (const int)value_size, 
					ACL_TYPE_DEFAULT, cifs_sb->local_nls);
			cFYI(1,("set POSIX default ACL rc %d",rc));
#else
			cFYI(1,("set default POSIX ACL not supported"));
@@ -248,6 +250,7 @@ ssize_t cifs_getxattr(struct dentry * direntry, const char * ea_name,
			buf_size, cifs_sb->local_nls);
	} else if(strncmp(ea_name,POSIX_ACL_XATTR_ACCESS,strlen(POSIX_ACL_XATTR_ACCESS)) == 0) {
#ifdef CONFIG_CIFS_POSIX
		if(sb->s_flags & MS_POSIXACL)
			rc = CIFSSMBGetPosixACL(xid, pTcon, full_path,
				ea_value, buf_size, ACL_TYPE_ACCESS, 
				cifs_sb->local_nls);
@@ -256,6 +259,7 @@ ssize_t cifs_getxattr(struct dentry * direntry, const char * ea_name,
#endif /* CONFIG_CIFS_POSIX */
	} else if(strncmp(ea_name,POSIX_ACL_XATTR_DEFAULT,strlen(POSIX_ACL_XATTR_DEFAULT)) == 0) {
#ifdef CONFIG_CIFS_POSIX
		if(sb->s_flags & MS_POSIXACL)
			rc = CIFSSMBGetPosixACL(xid, pTcon, full_path,
				ea_value, buf_size, ACL_TYPE_DEFAULT, 
				cifs_sb->local_nls);