All of lore.kernel.org
 help / color / mirror / Atom feed
From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
To: Jonathan Corbet <corbet@lwn.net>
Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] docs: kref: Clarify the use of two kref_put() in example code
Date: Wed, 19 Feb 2020 16:40:55 +0530	[thread overview]
Message-ID: <20200219111055.GA4552@mani> (raw)
In-Reply-To: <20200219035818.08ad246f@lwn.net>

Hi Jon,

On Wed, Feb 19, 2020 at 03:58:18AM -0700, Jonathan Corbet wrote:
> On Thu, 13 Feb 2020 18:23:11 +0530
> Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> wrote:
> 
> > Eventhough the current documentation explains that the reference count
> > gets incremented by both kref_init() and kref_get(), it is often
> > misunderstood that only one instance of kref_put() is needed in the
> > example code. So let's clarify that a bit.
> > 
> > Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
> > ---
> >  Documentation/kref.txt | 4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > diff --git a/Documentation/kref.txt b/Documentation/kref.txt
> > index 3af384156d7e..c61eea6f1bf2 100644
> > --- a/Documentation/kref.txt
> > +++ b/Documentation/kref.txt
> > @@ -128,6 +128,10 @@ since we already have a valid pointer that we own a refcount for.  The
> >  put needs no lock because nothing tries to get the data without
> >  already holding a pointer.
> >  
> > +In the above example, kref_put() will be called 2 times in both success
> > +and error paths. This is necessary because the reference count got
> > +incremented 2 times by kref_init() and kref_get().
> 
> Out of curiosity, where have you seen this misunderstanding happening?
> I'm not really opposed to this change, but I don't understand why it's
> really needed.
>

Jakub mistakenly spotted one refcounting issue in one of my patchset:
https://lkml.org/lkml/2020/2/3/926

Then I tried to show him the kernel doc for kref and that's where I got this
example code slightly confusing. And while looking into the log, I noticed that
someone deleted the kref_put in error path mistakenly and that commit got
reverted after that. This issue was even discussed in stack overflow.

http://stackoverflow.com/questions/20093127/why-kref-doc-of-linux-kernel-omits-kref-put-when-kthread-run-fail

So I thought about making it more clear of why the kref_put is needed in error
path.

Thanks,
Mani
 
> Thanks,
> 
> jon

  reply	other threads:[~2020-02-19 11:11 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-13 12:53 [PATCH] docs: kref: Clarify the use of two kref_put() in example code Manivannan Sadhasivam
2020-02-19 10:58 ` Jonathan Corbet
2020-02-19 11:10   ` Manivannan Sadhasivam [this message]
2020-02-25 10:39     ` Jonathan Corbet

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=20200219111055.GA4552@mani \
    --to=manivannan.sadhasivam@linaro.org \
    --cc=corbet@lwn.net \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /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.