diff options
author | Steve French <smfrench@austin.rr.com> | 2005-04-29 01:41:04 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-29 01:41:04 -0400 |
commit | 1da0c78b32abe122a959d2a57ba3d41563d8e39f (patch) | |
tree | 65ab9cf2032aa9c262397ae04acf30daa0af26ec | |
parent | 2604f6da1afb56fae5930b58349e43a2b0345933 (diff) |
[PATCH] cifs: Only send POSIX ACL calls to server if server claims to support that capability bit
Signed-off-by: Steve French (sfrench@us.ibm.com)
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | fs/cifs/xattr.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/fs/cifs/xattr.c b/fs/cifs/xattr.c index 549afa184fd6..9a41bee11c5a 100644 --- a/fs/cifs/xattr.c +++ b/fs/cifs/xattr.c | |||
@@ -161,18 +161,20 @@ int cifs_setxattr(struct dentry * direntry, const char * ea_name, | |||
161 | strlen(POSIX_ACL_XATTR_ACCESS)); | 161 | strlen(POSIX_ACL_XATTR_ACCESS)); |
162 | if (temp == 0) { | 162 | if (temp == 0) { |
163 | #ifdef CONFIG_CIFS_POSIX | 163 | #ifdef CONFIG_CIFS_POSIX |
164 | rc = CIFSSMBSetPosixACL(xid, pTcon,full_path,ea_value, | 164 | if(sb->s_flags & MS_POSIXACL) |
165 | (const int)value_size, ACL_TYPE_ACCESS, | 165 | rc = CIFSSMBSetPosixACL(xid, pTcon,full_path, |
166 | cifs_sb->local_nls); | 166 | ea_value, (const int)value_size, |
167 | ACL_TYPE_ACCESS,cifs_sb->local_nls); | ||
167 | cFYI(1,("set POSIX ACL rc %d",rc)); | 168 | cFYI(1,("set POSIX ACL rc %d",rc)); |
168 | #else | 169 | #else |
169 | cFYI(1,("set POSIX ACL not supported")); | 170 | cFYI(1,("set POSIX ACL not supported")); |
170 | #endif | 171 | #endif |
171 | } else if(strncmp(ea_name,POSIX_ACL_XATTR_DEFAULT,strlen(POSIX_ACL_XATTR_DEFAULT)) == 0) { | 172 | } else if(strncmp(ea_name,POSIX_ACL_XATTR_DEFAULT,strlen(POSIX_ACL_XATTR_DEFAULT)) == 0) { |
172 | #ifdef CONFIG_CIFS_POSIX | 173 | #ifdef CONFIG_CIFS_POSIX |
173 | rc = CIFSSMBSetPosixACL(xid, pTcon,full_path,ea_value, | 174 | if(sb->s_flags & MS_POSIXACL) |
174 | (const int)value_size, ACL_TYPE_DEFAULT, | 175 | rc = CIFSSMBSetPosixACL(xid, pTcon,full_path, |
175 | cifs_sb->local_nls); | 176 | ea_value, (const int)value_size, |
177 | ACL_TYPE_DEFAULT, cifs_sb->local_nls); | ||
176 | cFYI(1,("set POSIX default ACL rc %d",rc)); | 178 | cFYI(1,("set POSIX default ACL rc %d",rc)); |
177 | #else | 179 | #else |
178 | cFYI(1,("set default POSIX ACL not supported")); | 180 | cFYI(1,("set default POSIX ACL not supported")); |
@@ -248,7 +250,8 @@ ssize_t cifs_getxattr(struct dentry * direntry, const char * ea_name, | |||
248 | buf_size, cifs_sb->local_nls); | 250 | buf_size, cifs_sb->local_nls); |
249 | } else if(strncmp(ea_name,POSIX_ACL_XATTR_ACCESS,strlen(POSIX_ACL_XATTR_ACCESS)) == 0) { | 251 | } else if(strncmp(ea_name,POSIX_ACL_XATTR_ACCESS,strlen(POSIX_ACL_XATTR_ACCESS)) == 0) { |
250 | #ifdef CONFIG_CIFS_POSIX | 252 | #ifdef CONFIG_CIFS_POSIX |
251 | rc = CIFSSMBGetPosixACL(xid, pTcon, full_path, | 253 | if(sb->s_flags & MS_POSIXACL) |
254 | rc = CIFSSMBGetPosixACL(xid, pTcon, full_path, | ||
252 | ea_value, buf_size, ACL_TYPE_ACCESS, | 255 | ea_value, buf_size, ACL_TYPE_ACCESS, |
253 | cifs_sb->local_nls); | 256 | cifs_sb->local_nls); |
254 | #else | 257 | #else |
@@ -256,7 +259,8 @@ ssize_t cifs_getxattr(struct dentry * direntry, const char * ea_name, | |||
256 | #endif /* CONFIG_CIFS_POSIX */ | 259 | #endif /* CONFIG_CIFS_POSIX */ |
257 | } else if(strncmp(ea_name,POSIX_ACL_XATTR_DEFAULT,strlen(POSIX_ACL_XATTR_DEFAULT)) == 0) { | 260 | } else if(strncmp(ea_name,POSIX_ACL_XATTR_DEFAULT,strlen(POSIX_ACL_XATTR_DEFAULT)) == 0) { |
258 | #ifdef CONFIG_CIFS_POSIX | 261 | #ifdef CONFIG_CIFS_POSIX |
259 | rc = CIFSSMBGetPosixACL(xid, pTcon, full_path, | 262 | if(sb->s_flags & MS_POSIXACL) |
263 | rc = CIFSSMBGetPosixACL(xid, pTcon, full_path, | ||
260 | ea_value, buf_size, ACL_TYPE_DEFAULT, | 264 | ea_value, buf_size, ACL_TYPE_DEFAULT, |
261 | cifs_sb->local_nls); | 265 | cifs_sb->local_nls); |
262 | #else | 266 | #else |