@ -30,10 +30,11 @@
# define MAX_EA_VALUE_SIZE 65535
# define CIFS_XATTR_DOS_ATTRIB "user.DosAttrib"
# define CIFS_XATTR_CIFS_ACL "system.cifs_acl"
# define CIFS_XATTR_USER_PREFIX "user."
# define CIFS_XATTR_SYSTEM_PREFIX "system."
# define CIFS_XATTR_OS2_PREFIX "os2."
# define CIFS_XATTR_SECURITY_PREFIX ". security"
# define CIFS_XATTR_SECURITY_PREFIX "security. "
# define CIFS_XATTR_TRUSTED_PREFIX "trusted."
# define XATTR_TRUSTED_PREFIX_LEN 8
# define XATTR_SECURITY_PREFIX_LEN 9
@ -277,29 +278,8 @@ ssize_t cifs_getxattr(struct dentry *direntry, const char *ea_name,
cifs_sb - > local_nls ,
cifs_sb - > mnt_cifs_flags &
CIFS_MOUNT_MAP_SPECIAL_CHR ) ;
# ifdef CONFIG_CIFS_EXPERIMENTAL
else if ( cifs_sb - > mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL ) {
__u16 fid ;
int oplock = 0 ;
struct cifs_ntsd * pacl = NULL ;
__u32 buflen = 0 ;
if ( experimEnabled )
rc = CIFSSMBOpen ( xid , pTcon , full_path ,
FILE_OPEN , GENERIC_READ , 0 , & fid ,
& oplock , NULL , cifs_sb - > local_nls ,
cifs_sb - > mnt_cifs_flags &
CIFS_MOUNT_MAP_SPECIAL_CHR ) ;
/* else rc is EOPNOTSUPP from above */
if ( rc = = 0 ) {
rc = CIFSSMBGetCIFSACL ( xid , pTcon , fid , & pacl ,
& buflen ) ;
CIFSSMBClose ( xid , pTcon , fid ) ;
}
}
# endif /* EXPERIMENTAL */
# else
cFYI ( 1 , " q uery POSIX ACL not supported yet" ) ;
cFYI ( 1 , " Query POSIX ACL not supported yet " ) ;
# endif /* CONFIG_CIFS_POSIX */
} else if ( strncmp ( ea_name , POSIX_ACL_XATTR_DEFAULT ,
strlen ( POSIX_ACL_XATTR_DEFAULT ) ) = = 0 ) {
@ -311,8 +291,33 @@ ssize_t cifs_getxattr(struct dentry *direntry, const char *ea_name,
cifs_sb - > mnt_cifs_flags &
CIFS_MOUNT_MAP_SPECIAL_CHR ) ;
# else
cFYI ( 1 , " query POSIX default ACL not supported yet " ) ;
# endif
cFYI ( 1 , " Query POSIX default ACL not supported yet " ) ;
# endif /* CONFIG_CIFS_POSIX */
} else if ( strncmp ( ea_name , CIFS_XATTR_CIFS_ACL ,
strlen ( CIFS_XATTR_CIFS_ACL ) ) = = 0 ) {
# ifdef CONFIG_CIFS_ACL
u32 acllen ;
struct cifs_ntsd * pacl ;
pacl = get_cifs_acl ( cifs_sb , direntry - > d_inode ,
full_path , & acllen ) ;
if ( IS_ERR ( pacl ) ) {
rc = PTR_ERR ( pacl ) ;
cERROR ( 1 , " %s: error %zd getting sec desc " ,
__func__ , rc ) ;
} else {
if ( ea_value ) {
if ( acllen > buf_size )
acllen = - ERANGE ;
else
memcpy ( ea_value , pacl , acllen ) ;
}
rc = acllen ;
kfree ( pacl ) ;
}
# else
cFYI ( 1 , " Query CIFS ACL not supported yet " ) ;
# endif /* CONFIG_CIFS_ACL */
} else if ( strncmp ( ea_name ,
CIFS_XATTR_TRUSTED_PREFIX , XATTR_TRUSTED_PREFIX_LEN ) = = 0 ) {
cFYI ( 1 , " Trusted xattr namespace not supported yet " ) ;