|
@@ -274,6 +274,23 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent)
|
|
goto fail_dput;
|
|
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);
|
|
|
|
+ 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) {
|
|
if (pgrp_set) {
|
|
sbi->oz_pgrp = find_get_pid(pgrp);
|
|
sbi->oz_pgrp = find_get_pid(pgrp);
|
|
if (!sbi->oz_pgrp) {
|
|
if (!sbi->oz_pgrp) {
|
|
@@ -291,23 +308,6 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent)
|
|
root_inode->i_fop = &autofs4_root_operations;
|
|
root_inode->i_fop = &autofs4_root_operations;
|
|
root_inode->i_op = &autofs4_dir_inode_operations;
|
|
root_inode->i_op = &autofs4_dir_inode_operations;
|
|
|
|
|
|
- /* Couldn't this be tested earlier? */
|
|
|
|
- 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);
|
|
|
|
- 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;
|
|
|
|
-
|
|
|
|
pr_debug("pipe fd = %d, pgrp = %u\n", pipefd, pid_nr(sbi->oz_pgrp));
|
|
pr_debug("pipe fd = %d, pgrp = %u\n", pipefd, pid_nr(sbi->oz_pgrp));
|
|
pipe = fget(pipefd);
|
|
pipe = fget(pipefd);
|
|
|
|
|