From: Benny Halevy <bhalevy@panasas.com>
To: Trond Myklebust <trond.myklebust@fys.uio.no>
Cc: William Andros Adamson <andros@netapp.com>, linux-nfs@vger.kernel.org
Subject: Re: What is the purpose of those put_rpccred() statements?
Date: Sun, 25 Oct 2009 16:39:59 +0200 [thread overview]
Message-ID: <4AE4633F.1010206@panasas.com> (raw)
In-Reply-To: <1256328550.3238.52.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
On Oct. 23, 2009, 22:09 +0200, Trond Myklebust <trond.myklebust@fys.uio.no> wrote:
> On Fri, 2009-10-23 at 15:56 -0400, Trond Myklebust wrote:
>> I'm finding a bunch of random calls of the form
>> put_rpccred(task->tk_msg.rpc_cred);
>>
>> in functions like nfs4_renew_done(), nfs41_sequence_call_done() with
>> apparently no corresponding get_rpccred(). Could you please enlighten me
>> what they are all about? They're not mentioned at all in the changelogs
>> of commits 29fba38b, and fc01cea9...
The original intent of this is:
http://linux-nfs.org/pipermail/pnfs/2007-December/002093.html
my bad rebase:
54cf1c6e937fd6e2e9724adba2af39eeaa7939d9
on top of your patch:
b0d3ded1a21dc3057daff5a488469d9e6aa1b567
NFSv4: Clean up nfs_expire_all_delegations()
left the call to put_rpccred() in nfs4_renew_state()
That said, since rpcauth_bindcred gets the rpc cred
when called from rpc_init_task
and rpc_put_task eventually puts the creds we don't
need to hold a reference on the creds the way
http://linux-nfs.org/pipermail/pnfs/2007-December/002093.html
intended...
Your fix below makes sense to me.
Benny
>>
>> Trond
> --------------------------------------------------------------------
> NFSv4: Fix two unbalanced put_rpccred() issues.
>
> From: Trond Myklebust <Trond.Myklebust@netapp.com>
>
> Commits 29fba38b (nfs41: lease renewal) and fc01cea9 (nfs41: sequence
> operation) introduce a couple of put_rpccred() calls on credentials for
> which there is no corresponding get_rpccred().
>
> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
> ---
>
> fs/nfs/nfs4proc.c | 4 ----
> 1 files changed, 0 insertions(+), 4 deletions(-)
>
>
> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
> index 65c2527..ff37454 100644
> --- a/fs/nfs/nfs4proc.c
> +++ b/fs/nfs/nfs4proc.c
> @@ -3065,9 +3065,6 @@ static void nfs4_renew_done(struct rpc_task *task, void *data)
> if (time_before(clp->cl_last_renewal,timestamp))
> clp->cl_last_renewal = timestamp;
> spin_unlock(&clp->cl_lock);
> - dprintk("%s calling put_rpccred on rpc_cred %p\n", __func__,
> - task->tk_msg.rpc_cred);
> - put_rpccred(task->tk_msg.rpc_cred);
> }
>
> static const struct rpc_call_ops nfs4_renew_ops = {
> @@ -4882,7 +4879,6 @@ void nfs41_sequence_call_done(struct rpc_task *task, void *data)
> nfs41_sequence_free_slot(clp, task->tk_msg.rpc_resp);
> dprintk("%s rpc_cred %p\n", __func__, task->tk_msg.rpc_cred);
>
> - put_rpccred(task->tk_msg.rpc_cred);
> kfree(task->tk_msg.rpc_argp);
> kfree(task->tk_msg.rpc_resp);
>
>
>
prev parent reply other threads:[~2009-10-25 14:39 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-23 19:56 What is the purpose of those put_rpccred() statements? Trond Myklebust
[not found] ` <1256327771.3238.51.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2009-10-23 20:09 ` Trond Myklebust
[not found] ` <1256328550.3238.52.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2009-10-25 14:39 ` Benny Halevy [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4AE4633F.1010206@panasas.com \
--to=bhalevy@panasas.com \
--cc=andros@netapp.com \
--cc=linux-nfs@vger.kernel.org \
--cc=trond.myklebust@fys.uio.no \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.