The current test on valid use of the "migration" mount option can never
report an error as it will only do so if
mnt->version !=4 && mnt->minor_version != 0
(and some other condition), but if that test would succeed, then the previous
test has already gone-to out_minorversion_mismatch.
So change the && to an || to get correct semantics.
Signed-off-by: NeilBrown <[email protected]>
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index 317d6fc2160e..910ed906eb82 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -1613,9 +1613,9 @@ static int nfs_parse_mount_options(char *raw,
if (mnt->minorversion && mnt->version != 4)
goto out_minorversion_mismatch;
if (mnt->options & NFS_OPTION_MIGRATION &&
- mnt->version != 4 && mnt->minorversion != 0)
+ (mnt->version != 4 || mnt->minorversion != 0))
goto out_migration_misuse;
/*
* verify that any proto=/mountproto= options match the address
On Nov 13, 2013, at 9:00 PM, NeilBrown <[email protected]> wrote:
>
> The current test on valid use of the "migration" mount option can never
> report an error as it will only do so if
> mnt->version !=4 && mnt->minor_version != 0
> (and some other condition), but if that test would succeed, then the previous
> test has already gone-to out_minorversion_mismatch.
>
> So change the && to an || to get correct semantics.
>
> Signed-off-by: NeilBrown <[email protected]>
Acked-by: Chuck Lever <[email protected]>
> diff --git a/fs/nfs/super.c b/fs/nfs/super.c
> index 317d6fc2160e..910ed906eb82 100644
> --- a/fs/nfs/super.c
> +++ b/fs/nfs/super.c
> @@ -1613,9 +1613,9 @@ static int nfs_parse_mount_options(char *raw,
> if (mnt->minorversion && mnt->version != 4)
> goto out_minorversion_mismatch;
>
> if (mnt->options & NFS_OPTION_MIGRATION &&
> - mnt->version != 4 && mnt->minorversion != 0)
> + (mnt->version != 4 || mnt->minorversion != 0))
> goto out_migration_misuse;
>
> /*
> * verify that any proto=/mountproto= options match the address
--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com