mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 06:31:52 +00:00
[CIFS] add mode to acl conversion helper function
Acked-by: Shirish Pargaonkar <shirishp@us.ibm.com> Signed-off-by: Steve French <sfrench@us.ibm.com>
This commit is contained in:
parent
15b0395911
commit
ce06c9f025
@ -1,3 +1,6 @@
|
||||
Version 1.52
|
||||
------------
|
||||
|
||||
Version 1.51
|
||||
------------
|
||||
Fix memory leak in statfs when mounted to very old servers (e.g.
|
||||
|
@ -138,9 +138,9 @@ static void access_flags_to_mode(__u32 ace_flags, int type, umode_t *pmode,
|
||||
umode_t *pbits_to_set)
|
||||
{
|
||||
/* the order of ACEs is important. The canonical order is to begin with
|
||||
DENY entries then follow with ALLOW, otherwise an allow entry could be
|
||||
DENY entries followed by ALLOW, otherwise an allow entry could be
|
||||
encountered first, making the subsequent deny entry like "dead code"
|
||||
which would be superflous since Windows stops when a match is made
|
||||
which would be superflous since Windows stops when a match is made
|
||||
for the operation you are trying to perform for your user */
|
||||
|
||||
/* For deny ACEs we change the mask so that subsequent allow access
|
||||
@ -188,6 +188,37 @@ static void access_flags_to_mode(__u32 ace_flags, int type, umode_t *pmode,
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
Generate access flags to reflect permissions mode is the existing mode.
|
||||
This function is called for every ACE in the DACL whose SID matches
|
||||
with either owner or group or everyone.
|
||||
*/
|
||||
|
||||
static void mode_to_access_flags(umode_t mode, umode_t bits_to_use,
|
||||
__u32 *pace_flags)
|
||||
{
|
||||
/* reset access mask */
|
||||
*pace_flags = 0x0;
|
||||
|
||||
/* bits to use are either S_IRWXU or S_IRWXG or S_IRWXO */
|
||||
mode &= bits_to_use;
|
||||
|
||||
/* check for R/W/X UGO since we do not know whose flags
|
||||
is this but we have cleared all the bits sans RWX for
|
||||
either user or group or other as per bits_to_use */
|
||||
if (mode & S_IRUGO)
|
||||
*pace_flags |= SET_FILE_READ_RIGHTS;
|
||||
if (mode & S_IWUGO)
|
||||
*pace_flags |= SET_FILE_WRITE_RIGHTS;
|
||||
if (mode & S_IXUGO)
|
||||
*pace_flags |= SET_FILE_EXEC_RIGHTS;
|
||||
|
||||
#ifdef CONFIG_CIFS_DEBUG2
|
||||
cFYI(1, ("mode: 0x%x, access flags now 0x%x", mode, *pace_flags));
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
#ifdef CONFIG_CIFS_DEBUG2
|
||||
static void dump_ace(struct cifs_ace *pace, char *end_of_acl)
|
||||
|
@ -106,5 +106,5 @@ extern int cifs_ioctl(struct inode *inode, struct file *filep,
|
||||
extern struct export_operations cifs_export_ops;
|
||||
#endif /* EXPERIMENTAL */
|
||||
|
||||
#define CIFS_VERSION "1.51"
|
||||
#define CIFS_VERSION "1.52"
|
||||
#endif /* _CIFSFS_H */
|
||||
|
Loading…
Reference in New Issue
Block a user