mildy easier to leave it in at the moment - if you want to remove it later with a followon that is fine too On Thu, Jul 8, 2021 at 6:25 PM ronnie sahlberg <ronniesahlberg@xxxxxxxxx> wrote: > > On Fri, Jul 9, 2021 at 8:12 AM Pavel Shilovsky <piastryyy@xxxxxxxxx> wrote: > > > > ср, 7 июл. 2021 г. в 16:25, Ronnie Sahlberg <lsahlber@xxxxxxxxxx>: > > > > > > Use the nice helpers to initialize and the uid/gid/cred_uid when passed as mount arguments. > > > > > > Signed-off-by: Ronnie Sahlberg <lsahlber@xxxxxxxxxx> > > > --- > > > fs/cifs/fs_context.c | 24 +++++++++++++++++++----- > > > fs/cifs/fs_context.h | 1 + > > > 2 files changed, 20 insertions(+), 5 deletions(-) > > > > > > diff --git a/fs/cifs/fs_context.c b/fs/cifs/fs_context.c > > > index 92d4ab029c91..553adfbcc22a 100644 > > > --- a/fs/cifs/fs_context.c > > > +++ b/fs/cifs/fs_context.c > > > @@ -322,7 +322,6 @@ smb3_fs_context_dup(struct smb3_fs_context *new_ctx, struct smb3_fs_context *ctx > > > new_ctx->UNC = NULL; > > > new_ctx->source = NULL; > > > new_ctx->iocharset = NULL; > > > - > > > /* > > > * Make sure to stay in sync with smb3_cleanup_fs_context_contents() > > > */ > > > @@ -792,6 +791,8 @@ static int smb3_fs_context_parse_param(struct fs_context *fc, > > > int i, opt; > > > bool is_smb3 = !strcmp(fc->fs_type->name, "smb3"); > > > bool skip_parsing = false; > > > + kuid_t uid; > > > + kgid_t gid; > > > > > > cifs_dbg(FYI, "CIFS: parsing cifs mount option '%s'\n", param->key); > > > > > > @@ -904,18 +905,31 @@ static int smb3_fs_context_parse_param(struct fs_context *fc, > > > } > > > break; > > > case Opt_uid: > > > - ctx->linux_uid.val = result.uint_32; > > > + uid = make_kuid(current_user_ns(), result.uint_32); > > > + if (!uid_valid(uid)) > > > + goto cifs_parse_mount_err; > > > + ctx->linux_uid = uid; > > > ctx->uid_specified = true; > > > break; > > > case Opt_cruid: > > > - ctx->cred_uid.val = result.uint_32; > > > + uid = make_kuid(current_user_ns(), result.uint_32); > > > + if (!uid_valid(uid)) > > > + goto cifs_parse_mount_err; > > > + ctx->cred_uid = uid; > > > + ctx->cruid_specified = true; > > > break; > > > case Opt_backupgid: > > > - ctx->backupgid.val = result.uint_32; > > > + gid = make_kgid(current_user_ns(), result.uint_32); > > > + if (!gid_valid(gid)) > > > + goto cifs_parse_mount_err; > > > + ctx->backupgid = gid; > > > ctx->backupgid_specified = true; > > > break; > > > case Opt_gid: > > > - ctx->linux_gid.val = result.uint_32; > > > + gid = make_kgid(current_user_ns(), result.uint_32); > > > + if (!gid_valid(gid)) > > > + goto cifs_parse_mount_err; > > > + ctx->linux_gid = gid; > > > ctx->gid_specified = true; > > > break; > > > case Opt_port: > > > diff --git a/fs/cifs/fs_context.h b/fs/cifs/fs_context.h > > > index 2a71c8e411ac..b6243972edf3 100644 > > > --- a/fs/cifs/fs_context.h > > > +++ b/fs/cifs/fs_context.h > > > @@ -155,6 +155,7 @@ enum cifs_param { > > > > > > struct smb3_fs_context { > > > bool uid_specified; > > > + bool cruid_specified; > > > > Is it going to be used somewhere? > > I use it in other patches, and may add a similar variable to the > session structure as well so we can change the code where we print the > mount argument and make it conditional on whether cruid was set on the > original command line or not. > We currently always print cruid as a mount argument in the mount > output and print it as cruid=0 if it was not specified, which is fine > but may be confusing/redundant. > > I am fine with either leaving it in or removing it, and I can add it > back later once it actually starts being used. > > > > > > bool gid_specified; > > > bool sloppy; > > > bool got_ip; > > > -- > > > 2.30.2 > > > > > > > Acked-by: Pavel Shilovsky <pshilovsky@xxxxxxxxx> > > > > -- > > Best regards, > > Pavel Shilovsky -- Thanks, Steve