mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 22:02:02 +00:00
autofs: validate protocol version
Move the protocol parameter validation into a seperate function. Signed-off-by: Ian Kent <raven@themaw.net> Reviewed-by: Bill O'Donnell <bodonnel@redhat.com> Message-Id: <20230922041215.13675-7-raven@themaw.net> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
9b2731666d
commit
1f50012d9c
1 changed files with 23 additions and 15 deletions
|
@ -287,6 +287,28 @@ static struct autofs_sb_info *autofs_alloc_sbi(void)
|
|||
return sbi;
|
||||
}
|
||||
|
||||
static int autofs_validate_protocol(struct autofs_sb_info *sbi)
|
||||
{
|
||||
/* Test versions first */
|
||||
if (sbi->max_proto < AUTOFS_MIN_PROTO_VERSION ||
|
||||
sbi->min_proto > AUTOFS_MAX_PROTO_VERSION) {
|
||||
pr_err("kernel does not match daemon version "
|
||||
"daemon (%d, %d) kernel (%d, %d)\n",
|
||||
sbi->min_proto, sbi->max_proto,
|
||||
AUTOFS_MIN_PROTO_VERSION, AUTOFS_MAX_PROTO_VERSION);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Establish highest kernel protocol version */
|
||||
if (sbi->max_proto > AUTOFS_MAX_PROTO_VERSION)
|
||||
sbi->version = AUTOFS_MAX_PROTO_VERSION;
|
||||
else
|
||||
sbi->version = sbi->max_proto;
|
||||
sbi->sub_version = AUTOFS_PROTO_SUBVERSION;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int autofs_fill_super(struct super_block *s, void *data, int silent)
|
||||
{
|
||||
struct inode *root_inode;
|
||||
|
@ -335,22 +357,8 @@ int autofs_fill_super(struct super_block *s, void *data, int silent)
|
|||
goto fail_dput;
|
||||
}
|
||||
|
||||
/* Test versions first */
|
||||
if (sbi->max_proto < AUTOFS_MIN_PROTO_VERSION ||
|
||||
sbi->min_proto > AUTOFS_MAX_PROTO_VERSION) {
|
||||
pr_err("kernel does not match daemon version "
|
||||
"daemon (%d, %d) kernel (%d, %d)\n",
|
||||
sbi->min_proto, sbi->max_proto,
|
||||
AUTOFS_MIN_PROTO_VERSION, AUTOFS_MAX_PROTO_VERSION);
|
||||
if (autofs_validate_protocol(sbi))
|
||||
goto fail_dput;
|
||||
}
|
||||
|
||||
/* Establish highest kernel protocol version */
|
||||
if (sbi->max_proto > AUTOFS_MAX_PROTO_VERSION)
|
||||
sbi->version = AUTOFS_MAX_PROTO_VERSION;
|
||||
else
|
||||
sbi->version = sbi->max_proto;
|
||||
sbi->sub_version = AUTOFS_PROTO_SUBVERSION;
|
||||
|
||||
if (pgrp_set) {
|
||||
sbi->oz_pgrp = find_get_pid(pgrp);
|
||||
|
|
Loading…
Reference in a new issue