Skip to content

Commit

Permalink
cifs: reinstate original behavior again for forceuid/forcegid
Browse files Browse the repository at this point in the history
[ Upstream commit 77d8aa7 ]

forceuid/forcegid should be enabled by default when uid=/gid= options are
specified, but commit 24e0a1e ("cifs: switch to new mount api")
changed the behavior. Due to the change, a mounted share does not show
intentional uid/gid for files and directories even though uid=/gid=
options are specified since forceuid/forcegid are not enabled.

This patch reinstates original behavior that overrides uid/gid with
specified uid/gid by the options.

Fixes: 24e0a1e ("cifs: switch to new mount api")
Signed-off-by: Takayuki Nagata <tnagata@redhat.com>
Acked-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
Acked-by: Ronnie Sahlberg <lsahlber@redhat.com>
Acked-by: Tom Talpey <tom@talpey.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
takayuki-nagata authored and gregkh committed May 2, 2024
1 parent 5514967 commit fc1860a
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 0 deletions.
12 changes: 12 additions & 0 deletions fs/smb/client/fs_context.c
Original file line number Diff line number Diff line change
Expand Up @@ -714,6 +714,16 @@ static int smb3_fs_context_validate(struct fs_context *fc)
/* set the port that we got earlier */
cifs_set_port((struct sockaddr *)&ctx->dstaddr, ctx->port);

if (ctx->uid_specified && !ctx->forceuid_specified) {
ctx->override_uid = 1;
pr_notice("enabling forceuid mount option implicitly because uid= option is specified\n");
}

if (ctx->gid_specified && !ctx->forcegid_specified) {
ctx->override_gid = 1;
pr_notice("enabling forcegid mount option implicitly because gid= option is specified\n");
}

if (ctx->override_uid && !ctx->uid_specified) {
ctx->override_uid = 0;
pr_notice("ignoring forceuid mount option specified with no uid= option\n");
Expand Down Expand Up @@ -983,12 +993,14 @@ static int smb3_fs_context_parse_param(struct fs_context *fc,
ctx->override_uid = 0;
else
ctx->override_uid = 1;
ctx->forceuid_specified = true;
break;
case Opt_forcegid:
if (result.negated)
ctx->override_gid = 0;
else
ctx->override_gid = 1;
ctx->forcegid_specified = true;
break;
case Opt_perm:
if (result.negated)
Expand Down
2 changes: 2 additions & 0 deletions fs/smb/client/fs_context.h
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,8 @@ enum cifs_param {
};

struct smb3_fs_context {
bool forceuid_specified;
bool forcegid_specified;
bool uid_specified;
bool cruid_specified;
bool gid_specified;
Expand Down

0 comments on commit fc1860a

Please sign in to comment.