Patch "cifs: reinstate original behavior again for forceuid/forcegid" has been added to the 6.8-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    cifs: reinstate original behavior again for forceuid/forcegid

to the 6.8-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     cifs-reinstate-original-behavior-again-for-forceuid-.patch
and it can be found in the queue-6.8 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 1f1742f5d55afd1ab5b41661c334aba10245f696
Author: Takayuki Nagata <tnagata@xxxxxxxxxx>
Date:   Mon Apr 15 16:47:49 2024 +0900

    cifs: reinstate original behavior again for forceuid/forcegid
    
    [ Upstream commit 77d8aa79ecfb209308e0644c02f655122b31def7 ]
    
    forceuid/forcegid should be enabled by default when uid=/gid= options are
    specified, but commit 24e0a1eff9e2 ("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: 24e0a1eff9e2 ("cifs: switch to new mount api")
    Signed-off-by: Takayuki Nagata <tnagata@xxxxxxxxxx>
    Acked-by: Paulo Alcantara (Red Hat) <pc@xxxxxxxxxxxxx>
    Acked-by: Ronnie Sahlberg <lsahlber@xxxxxxxxxx>
    Acked-by: Tom Talpey <tom@xxxxxxxxxx>
    Signed-off-by: Steve French <stfrench@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/smb/client/fs_context.c b/fs/smb/client/fs_context.c
index d9fe17b2ba375..775b0ca605892 100644
--- a/fs/smb/client/fs_context.c
+++ b/fs/smb/client/fs_context.c
@@ -715,6 +715,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");
@@ -984,12 +994,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)
diff --git a/fs/smb/client/fs_context.h b/fs/smb/client/fs_context.h
index b3d51b345eaef..61776572b8d2d 100644
--- a/fs/smb/client/fs_context.h
+++ b/fs/smb/client/fs_context.h
@@ -156,6 +156,8 @@ enum cifs_param {
 };
 
 struct smb3_fs_context {
+	bool forceuid_specified;
+	bool forcegid_specified;
 	bool uid_specified;
 	bool cruid_specified;
 	bool gid_specified;




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux