Commit 65656f52 authored by Atte Heikkilä's avatar Atte Heikkilä Committed by Steve French
Browse files

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: default avatarAtte Heikkilä <atteh.mailbox@gmail.com>
Acked-by: default avatarNamjae Jeon <linkinjeon@kernel.org>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent 041bba44
Loading
Loading
Loading
Loading
+11 −18
Original line number Diff line number Diff line
@@ -34,29 +34,22 @@ struct ksmbd_share_config {
#define KSMBD_SHARE_INVALID_UID	((__u16)-1)
#define KSMBD_SHARE_INVALID_GID	((__u16)-1)

static inline int share_config_create_mode(struct ksmbd_share_config *share,
static inline umode_t
share_config_create_mode(struct ksmbd_share_config *share,
			 umode_t posix_mode)
{
	if (!share->force_create_mode) {
		if (!posix_mode)
			return share->create_mask;
		else
			return posix_mode & share->create_mask;
	}
	return share->force_create_mode & share->create_mask;
	umode_t mode = (posix_mode ?: (umode_t)-1) & share->create_mask;

	return mode | share->force_create_mode;
}

static inline int share_config_directory_mode(struct ksmbd_share_config *share,
static inline umode_t
share_config_directory_mode(struct ksmbd_share_config *share,
			    umode_t posix_mode)
{
	if (!share->force_directory_mode) {
		if (!posix_mode)
			return share->directory_mask;
		else
			return posix_mode & share->directory_mask;
	}
	umode_t mode = (posix_mode ?: (umode_t)-1) & share->directory_mask;

	return share->force_directory_mode & share->directory_mask;
	return mode | share->force_directory_mode;
}

static inline int test_share_config_flag(struct ksmbd_share_config *share,