linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Josh Triplett <josh@joshtriplett.org>
Cc: linux-kernel@vger.kernel.org, mingo@kernel.org,
	laijs@cn.fujitsu.com, dipankar@in.ibm.com,
	akpm@linux-foundation.org, mathieu.desnoyers@efficios.com,
	niv@us.ibm.com, tglx@linutronix.de, peterz@infradead.org,
	rostedt@goodmis.org, dhowells@redhat.com, edumazet@google.com,
	darren@dvhart.com, fweisbec@gmail.com, oleg@redhat.com,
	sbw@mit.edu, Alexander Viro <viro@zeniv.linux.org.uk>,
	linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH tip/core/rcu 09/12] fs: Substitute rcu_access_pointer() for rcu_dereference_raw()
Date: Mon, 17 Feb 2014 15:05:11 -0800	[thread overview]
Message-ID: <20140217230511.GP4250@linux.vnet.ibm.com> (raw)
In-Reply-To: <20140217220014.GH7941@thin>

On Mon, Feb 17, 2014 at 02:00:15PM -0800, Josh Triplett wrote:
> On Mon, Feb 17, 2014 at 01:35:56PM -0800, Paul E. McKenney wrote:
> > From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
> > 
> > (Trivial patch.)
> > 
> > If the code is looking at the RCU-protected pointer itself, but not
> > dereferencing it, the rcu_dereference() functions can be downgraded to
> > rcu_access_pointer().  This commit makes this downgrade in __alloc_fd(),
> > which simply compares the RCU-protected pointer against NULL with no
> > dereferencing.
> > 
> > Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> > Cc: Alexander Viro <viro@zeniv.linux.org.uk>
> > Cc: linux-fsdevel@vger.kernel.org
> 
> I'm beginning to wonder if this common pattern ought to have an
> rcu_pointer_is_null(), which would not return the pointer, only the
> boolean.

Or perhaps an rcu_compare_pointer() to also handle the various cases like:

	if (rcu_dereference_raw(foop) == barp) ...

I added the problem to the RCU cleanup list on the OPW site, and
your solution or my elaboration of it might be the right thing to do.
(Inspected all 1300 uses of members of the rcu_dereference() family of
functions last week, and was feeling a bit buggy-eyed at the end...)

							Thanx, Paul

> Regardless, for this patch:
> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
> 
> >  fs/file.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/fs/file.c b/fs/file.c
> > index db25c2bdfe46..18f7d27855c4 100644
> > --- a/fs/file.c
> > +++ b/fs/file.c
> > @@ -497,7 +497,7 @@ repeat:
> >  	error = fd;
> >  #if 1
> >  	/* Sanity check */
> > -	if (rcu_dereference_raw(fdt->fd[fd]) != NULL) {
> > +	if (rcu_access_pointer(fdt->fd[fd]) != NULL) {
> >  		printk(KERN_WARNING "alloc_fd: slot %d not NULL!\n", fd);
> >  		rcu_assign_pointer(fdt->fd[fd], NULL);
> >  	}
> > -- 
> > 1.8.1.5
> > 
> 


  reply	other threads:[~2014-02-17 23:05 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20140217213533.GA5387@linux.vnet.ibm.com>
     [not found] ` <1392672959-6386-1-git-send-email-paulmck@linux.vnet.ibm.com>
2014-02-17 21:35   ` [PATCH tip/core/rcu 09/12] fs: Substitute rcu_access_pointer() for rcu_dereference_raw() Paul E. McKenney
2014-02-17 22:00     ` Josh Triplett
2014-02-17 23:05       ` Paul E. McKenney [this message]
2014-02-18  0:04         ` Josh Triplett
2014-02-18  0:27           ` Paul E. McKenney

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=20140217230511.GP4250@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=darren@dvhart.com \
    --cc=dhowells@redhat.com \
    --cc=dipankar@in.ibm.com \
    --cc=edumazet@google.com \
    --cc=fweisbec@gmail.com \
    --cc=josh@joshtriplett.org \
    --cc=laijs@cn.fujitsu.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mingo@kernel.org \
    --cc=niv@us.ibm.com \
    --cc=oleg@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=sbw@mit.edu \
    --cc=tglx@linutronix.de \
    --cc=viro@zeniv.linux.org.uk \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).