diff mbox series

[next] nfsd: fix check of statid returned from call to find_stateid_by_type

Message ID 20210128144935.640026-1-colin.king@canonical.com (mailing list archive)
State New
Headers show
Series [next] nfsd: fix check of statid returned from call to find_stateid_by_type | expand

Commit Message

Colin Ian King Jan. 28, 2021, 2:49 p.m. UTC
From: Colin Ian King <colin.king@canonical.com>

The call to find_stateid_by_type is setting the return value in *stid
yet the NULL check of the return is checking stid instead of *stid.
Fix this by adding in the missing pointer * operator.

Addresses-Coverity: ("Dereference before null check")
Fixes: 6cdaa72d4dde ("nfsd: find_cpntf_state cleanup")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 fs/nfsd/nfs4state.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Chuck Lever III Jan. 28, 2021, 3:05 p.m. UTC | #1
Hi Colin-

> On Jan 28, 2021, at 9:49 AM, Colin King <colin.king@canonical.com> wrote:
> 
> From: Colin Ian King <colin.king@canonical.com>
> 
> The call to find_stateid_by_type is setting the return value in *stid
> yet the NULL check of the return is checking stid instead of *stid.
> Fix this by adding in the missing pointer * operator.
> 
> Addresses-Coverity: ("Dereference before null check")
> Fixes: 6cdaa72d4dde ("nfsd: find_cpntf_state cleanup")
> Signed-off-by: Colin Ian King <colin.king@canonical.com>

Thanks for your patch. I've committed it to the for-next branch at

git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git

in preparation for the v5.12 merge window, with the following changes:

- ^statid^stateid
- Fixes: tag removed, since no stable backport is necessary

The commit you are fixing has not been merged upstream yet.


> ---
> fs/nfsd/nfs4state.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
> index f554e3480bb1..423fd6683f3a 100644
> --- a/fs/nfsd/nfs4state.c
> +++ b/fs/nfsd/nfs4state.c
> @@ -5824,7 +5824,7 @@ static __be32 find_cpntf_state(struct nfsd_net *nn, stateid_t *st,
> 
> 	*stid = find_stateid_by_type(found, &cps->cp_p_stateid,
> 			NFS4_DELEG_STID|NFS4_OPEN_STID|NFS4_LOCK_STID);
> -	if (stid)
> +	if (*stid)
> 		status = nfs_ok;
> 	else
> 		status = nfserr_bad_stateid;
> -- 
> 2.29.2
> 

--
Chuck Lever
J. Bruce Fields Jan. 28, 2021, 3:17 p.m. UTC | #2
On Thu, Jan 28, 2021 at 03:05:06PM +0000, Chuck Lever wrote:
> Hi Colin-
> 
> > On Jan 28, 2021, at 9:49 AM, Colin King <colin.king@canonical.com> wrote:
> > 
> > From: Colin Ian King <colin.king@canonical.com>
> > 
> > The call to find_stateid_by_type is setting the return value in *stid
> > yet the NULL check of the return is checking stid instead of *stid.
> > Fix this by adding in the missing pointer * operator.
> > 
> > Addresses-Coverity: ("Dereference before null check")
> > Fixes: 6cdaa72d4dde ("nfsd: find_cpntf_state cleanup")
> > Signed-off-by: Colin Ian King <colin.king@canonical.com>
> 
> Thanks for your patch. I've committed it to the for-next branch at
> 
> git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git
> 
> in preparation for the v5.12 merge window, with the following changes:
> 
> - ^statid^stateid
> - Fixes: tag removed, since no stable backport is necessary

Please keep the "Fixes:" tag!  It's still very useful information.  For
example, if someone needs to backport the original patch, this is a
reminder they'll want this one as well.

(Of course, if you fold this patch into the earlier one instead, that's
a different situation.)

--b.

> The commit you are fixing has not been merged upstream yet.
> 
> 
> > ---
> > fs/nfsd/nfs4state.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
> > index f554e3480bb1..423fd6683f3a 100644
> > --- a/fs/nfsd/nfs4state.c
> > +++ b/fs/nfsd/nfs4state.c
> > @@ -5824,7 +5824,7 @@ static __be32 find_cpntf_state(struct nfsd_net *nn, stateid_t *st,
> > 
> > 	*stid = find_stateid_by_type(found, &cps->cp_p_stateid,
> > 			NFS4_DELEG_STID|NFS4_OPEN_STID|NFS4_LOCK_STID);
> > -	if (stid)
> > +	if (*stid)
> > 		status = nfs_ok;
> > 	else
> > 		status = nfserr_bad_stateid;
> > -- 
> > 2.29.2
> > 
> 
> --
> Chuck Lever
> 
>
Dan Carpenter Jan. 28, 2021, 3:34 p.m. UTC | #3
On Thu, Jan 28, 2021 at 03:05:06PM +0000, Chuck Lever wrote:
> Hi Colin-
> 
> > On Jan 28, 2021, at 9:49 AM, Colin King <colin.king@canonical.com> wrote:
> > 
> > From: Colin Ian King <colin.king@canonical.com>
> > 
> > The call to find_stateid_by_type is setting the return value in *stid
> > yet the NULL check of the return is checking stid instead of *stid.
> > Fix this by adding in the missing pointer * operator.
> > 
> > Addresses-Coverity: ("Dereference before null check")
> > Fixes: 6cdaa72d4dde ("nfsd: find_cpntf_state cleanup")
> > Signed-off-by: Colin Ian King <colin.king@canonical.com>
> 
> Thanks for your patch. I've committed it to the for-next branch at
> 
> git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git
> 
> in preparation for the v5.12 merge window, with the following changes:
> 
> - ^statid^stateid
> - Fixes: tag removed, since no stable backport is necessary
> 
> The commit you are fixing has not been merged upstream yet.

Fixes tags don't meant the patch has to be backported.  Is your tree
rebased?  In that case, the fixes tag probably doesn't make sense
because the tag can change.  You might want to just consider folding
Colin's fix into the original commit.

Fixes tags are used for a lot of different things:
1)  If there is a fixes tag, then you can tell it does *NOT* have to
    be back ported because the original commit is not in the stable
    tree.  It saves time for the stable maintainers.
2)  Metrics to figure out how quickly we are fixing bugs.
3)  Sometimes the Fixes tag helps because we want to review the original
    patch to see what the intent was.

All sorts of stuff.  Etc.

regards,
dan carpenter
Chuck Lever III Jan. 28, 2021, 3:53 p.m. UTC | #4
Hi Dan-

> On Jan 28, 2021, at 10:34 AM, Dan Carpenter <dan.carpenter@oracle.com> wrote:
> 
> On Thu, Jan 28, 2021 at 03:05:06PM +0000, Chuck Lever wrote:
>> Hi Colin-
>> 
>>> On Jan 28, 2021, at 9:49 AM, Colin King <colin.king@canonical.com> wrote:
>>> 
>>> From: Colin Ian King <colin.king@canonical.com>
>>> 
>>> The call to find_stateid_by_type is setting the return value in *stid
>>> yet the NULL check of the return is checking stid instead of *stid.
>>> Fix this by adding in the missing pointer * operator.
>>> 
>>> Addresses-Coverity: ("Dereference before null check")
>>> Fixes: 6cdaa72d4dde ("nfsd: find_cpntf_state cleanup")
>>> Signed-off-by: Colin Ian King <colin.king@canonical.com>
>> 
>> Thanks for your patch. I've committed it to the for-next branch at
>> 
>> git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git
>> 
>> in preparation for the v5.12 merge window, with the following changes:
>> 
>> - ^statid^stateid
>> - Fixes: tag removed, since no stable backport is necessary
>> 
>> The commit you are fixing has not been merged upstream yet.
> 
> Fixes tags don't meant the patch has to be backported.  Is your tree
> rebased?  In that case, the fixes tag probably doesn't make sense
> because the tag can change.  You might want to just consider folding
> Colin's fix into the original commit.

Yes, this branch can be rebased on occasion. Since you and Bruce
suggest squashing the fix into the original patch, I will do that.


> Fixes tags are used for a lot of different things:
> 1)  If there is a fixes tag, then you can tell it does *NOT* have to
>    be back ported because the original commit is not in the stable
>    tree.  It saves time for the stable maintainers.
> 2)  Metrics to figure out how quickly we are fixing bugs.
> 3)  Sometimes the Fixes tag helps because we want to review the original
>    patch to see what the intent was.
> 
> All sorts of stuff.  Etc.

Yep, I'm a fan of all that. I just want to avoid poking the stable
automation bear when it's unnecessary.

--
Chuck Lever
J. Bruce Fields Jan. 28, 2021, 6:50 p.m. UTC | #5
On Thu, Jan 28, 2021 at 03:53:36PM +0000, Chuck Lever wrote:
> > On Jan 28, 2021, at 10:34 AM, Dan Carpenter <dan.carpenter@oracle.com> wrote:
> > Fixes tags are used for a lot of different things:
> > 1)  If there is a fixes tag, then you can tell it does *NOT* have to
> >    be back ported because the original commit is not in the stable
> >    tree.  It saves time for the stable maintainers.
> > 2)  Metrics to figure out how quickly we are fixing bugs.
> > 3)  Sometimes the Fixes tag helps because we want to review the original
> >    patch to see what the intent was.
> > 
> > All sorts of stuff.  Etc.
> 
> Yep, I'm a fan of all that. I just want to avoid poking the stable
> automation bear when it's unnecessary.

I've routinely had patches with Fixes: lines referencing other queued-up
patches, and I didn't get any stable mail about it.

100% not something to worry about.

--b.
diff mbox series

Patch

diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index f554e3480bb1..423fd6683f3a 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -5824,7 +5824,7 @@  static __be32 find_cpntf_state(struct nfsd_net *nn, stateid_t *st,
 
 	*stid = find_stateid_by_type(found, &cps->cp_p_stateid,
 			NFS4_DELEG_STID|NFS4_OPEN_STID|NFS4_LOCK_STID);
-	if (stid)
+	if (*stid)
 		status = nfs_ok;
 	else
 		status = nfserr_bad_stateid;