2013-11-14 02:00:41

by NeilBrown

[permalink] [raw]
Subject: [PATCH] NFS: correctly report misuse of "migration" mount option.


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


Attachments:
signature.asc (828.00 B)

2013-11-14 16:31:56

by Chuck Lever III

[permalink] [raw]
Subject: Re: [PATCH] NFS: correctly report misuse of "migration" mount option.


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