2015-02-11 13:07:43

by Dan Carpenter

[permalink] [raw]
Subject: [patch] nfsd: fix comparison in fh_fsid_match()

We're supposed to be testing that the fh_fsid's match but because the
parenthesis are in the wrong place, then we only check the first
byte.

Fixes: 9558f2500a20 ('nfsd: add fh_fsid_match helper')
Signed-off-by: Dan Carpenter <[email protected]>

diff --git a/fs/nfsd/nfsfh.h b/fs/nfsd/nfsfh.h
index 84cae20..f229204 100644
--- a/fs/nfsd/nfsfh.h
+++ b/fs/nfsd/nfsfh.h
@@ -200,7 +200,7 @@ static inline bool fh_fsid_match(struct knfsd_fh *fh1, struct knfsd_fh *fh2)
{
if (fh1->fh_fsid_type != fh2->fh_fsid_type)
return false;
- if (memcmp(fh1->fh_fsid, fh2->fh_fsid, key_len(fh1->fh_fsid_type) != 0))
+ if (memcmp(fh1->fh_fsid, fh2->fh_fsid, key_len(fh1->fh_fsid_type)) != 0)
return false;
return true;
}


2015-02-11 13:21:22

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [patch] nfsd: fix comparison in fh_fsid_match()

On Wed, Feb 11, 2015 at 04:08:32PM +0300, Dan Carpenter wrote:
> We're supposed to be testing that the fh_fsid's match but because the
> parenthesis are in the wrong place, then we only check the first
> byte.
>
> Fixes: 9558f2500a20 ('nfsd: add fh_fsid_match helper')

Thanks, this looks good. Is there an easy to setup way to check for
these sorts of errors?

2015-02-11 14:03:20

by Dan Carpenter

[permalink] [raw]
Subject: Re: [patch] nfsd: fix comparison in fh_fsid_match()

On Wed, Feb 11, 2015 at 02:21:19PM +0100, Christoph Hellwig wrote:
> On Wed, Feb 11, 2015 at 04:08:32PM +0300, Dan Carpenter wrote:
> > We're supposed to be testing that the fh_fsid's match but because the
> > parenthesis are in the wrong place, then we only check the first
> > byte.
> >
> > Fixes: 9558f2500a20 ('nfsd: add fh_fsid_match helper')
>
> Thanks, this looks good. Is there an easy to setup way to check for
> these sorts of errors?

This is a Smatch check I wrote a couple years ago but it never found any
bugs until now so I didn't commit it. I have done. I'll push it out
later and Fengguang will eventually add it to the zero day tester bot.

regards,
dan carpenter


2015-02-12 20:29:47

by J. Bruce Fields

[permalink] [raw]
Subject: Re: [patch] nfsd: fix comparison in fh_fsid_match()

On Wed, Feb 11, 2015 at 04:08:32PM +0300, Dan Carpenter wrote:
> We're supposed to be testing that the fh_fsid's match but because the
> parenthesis are in the wrong place, then we only check the first
> byte.

Thanks, I'll pass this along!

--b.

>
> Fixes: 9558f2500a20 ('nfsd: add fh_fsid_match helper')
> Signed-off-by: Dan Carpenter <[email protected]>
>
> diff --git a/fs/nfsd/nfsfh.h b/fs/nfsd/nfsfh.h
> index 84cae20..f229204 100644
> --- a/fs/nfsd/nfsfh.h
> +++ b/fs/nfsd/nfsfh.h
> @@ -200,7 +200,7 @@ static inline bool fh_fsid_match(struct knfsd_fh *fh1, struct knfsd_fh *fh2)
> {
> if (fh1->fh_fsid_type != fh2->fh_fsid_type)
> return false;
> - if (memcmp(fh1->fh_fsid, fh2->fh_fsid, key_len(fh1->fh_fsid_type) != 0))
> + if (memcmp(fh1->fh_fsid, fh2->fh_fsid, key_len(fh1->fh_fsid_type)) != 0)
> return false;
> return true;
> }