Skip to content

Commit 65656f5

Browse files
atheikSteve French
authored andcommitted
ksmbd: fix force create mode' and force directory mode'
`force create mode' and `force directory mode' should be bitwise ORed with the perms after `create mask' and `directory mask' have been applied, respectively. Signed-off-by: Atte Heikkilä <atteh.mailbox@gmail.com> Acked-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com>
1 parent 041bba4 commit 65656f5

File tree

1 file changed

+11
-18
lines changed

1 file changed

+11
-18
lines changed

fs/smb/server/mgmt/share_config.h

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -34,29 +34,22 @@ struct ksmbd_share_config {
3434
#define KSMBD_SHARE_INVALID_UID ((__u16)-1)
3535
#define KSMBD_SHARE_INVALID_GID ((__u16)-1)
3636

37-
static inline int share_config_create_mode(struct ksmbd_share_config *share,
38-
umode_t posix_mode)
37+
static inline umode_t
38+
share_config_create_mode(struct ksmbd_share_config *share,
39+
umode_t posix_mode)
3940
{
40-
if (!share->force_create_mode) {
41-
if (!posix_mode)
42-
return share->create_mask;
43-
else
44-
return posix_mode & share->create_mask;
45-
}
46-
return share->force_create_mode & share->create_mask;
41+
umode_t mode = (posix_mode ?: (umode_t)-1) & share->create_mask;
42+
43+
return mode | share->force_create_mode;
4744
}
4845

49-
static inline int share_config_directory_mode(struct ksmbd_share_config *share,
50-
umode_t posix_mode)
46+
static inline umode_t
47+
share_config_directory_mode(struct ksmbd_share_config *share,
48+
umode_t posix_mode)
5149
{
52-
if (!share->force_directory_mode) {
53-
if (!posix_mode)
54-
return share->directory_mask;
55-
else
56-
return posix_mode & share->directory_mask;
57-
}
50+
umode_t mode = (posix_mode ?: (umode_t)-1) & share->directory_mask;
5851

59-
return share->force_directory_mode & share->directory_mask;
52+
return mode | share->force_directory_mode;
6053
}
6154

6255
static inline int test_share_config_flag(struct ksmbd_share_config *share,

0 commit comments

Comments
 (0)