[CIFS] ACL support part 5
Acked-by: Shirish Pargaonkar <shirishp@us.ibm.com> Signed-off-by: Steve French <sfrench@us.ibm.com>
This commit is contained in:
parent
c4ec207173
commit
4879b44829
|
@ -129,6 +129,29 @@ int compare_sids(struct cifs_sid *ctsid, struct cifs_sid *cwsid)
|
|||
return (1); /* sids compare/match */
|
||||
}
|
||||
|
||||
void get_mode_from_acl(struct inode * inode, const char * path)
|
||||
{
|
||||
|
||||
if (inode == NULL)
|
||||
return;
|
||||
|
||||
/* find an open readable handle
|
||||
if handle found
|
||||
lock handle
|
||||
else open file
|
||||
if no open file can not hurt to check if path is null
|
||||
GetCIFSACL
|
||||
for all ACEs in ACL {
|
||||
if U or G or O
|
||||
inode->i_mode = parse_ace(file_type, UG or O, ace->perms, inode->i_mode)
|
||||
else continue
|
||||
}
|
||||
if handle open close it
|
||||
else unlock handle */
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
static void parse_ace(struct cifs_ace *pace, char *end_of_acl)
|
||||
{
|
||||
|
|
|
@ -92,7 +92,7 @@ extern int cifs_get_inode_info(struct inode **pinode,
|
|||
extern int cifs_get_inode_info_unix(struct inode **pinode,
|
||||
const unsigned char *search_path,
|
||||
struct super_block *sb, int xid);
|
||||
|
||||
extern void get_mode_from_acl(struct inode * inode, const char * search_path);
|
||||
extern int cifs_mount(struct super_block *, struct cifs_sb_info *, char *,
|
||||
const char *);
|
||||
extern int cifs_umount(struct super_block *, struct cifs_sb_info *);
|
||||
|
|
|
@ -527,6 +527,12 @@ int cifs_get_inode_info(struct inode **pinode,
|
|||
|
||||
/* BB fill in uid and gid here? with help from winbind?
|
||||
or retrieve from NTFS stream extended attribute */
|
||||
#ifdef CONFIG_CIFS_EXPERIMENTAL
|
||||
if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) {
|
||||
cFYI(1, ("Getting mode bits from ACL"));
|
||||
get_mode_from_acl(inode, search_path);
|
||||
}
|
||||
#endif
|
||||
if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL) {
|
||||
/* fill in uid, gid, mode from server ACL */
|
||||
/* BB FIXME this should also take into account the
|
||||
|
|
Loading…
Reference in a new issue