lkml.org 
[lkml]   [2018]   [Oct]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH RFC 0/5] rcu doc updates for whatisRCU and checklist
On Fri, Oct 05, 2018 at 08:45:40PM -0700, Paul E. McKenney wrote:
>
> Shouldn't the synchronize_rcu() precede the loop doing the kfree()
> calls? Or am I missing something subtle?

No, that was a cut and paste error on my part. I was removing the
rcu_read_unlock() before the kfree loop, and accidentally removed the
synchronize_rcu(). Then when I put it back, I put it back in the
right place.

The longer version:

I originally used rcu_read_lock() and rcu_read_unlock() around setting
up to_free[] --- since whatisRCU.txt didn't talk about
rcu_derefence_proctected(), just rcu_dereference() in Section 2: "What
is RCU's Core API?"

Then when I looked at the example in Section 3, I was surprised when I
didn't see the rcu_read_[un]lock() on the updater side, and spent some
time trying to figure out how to use rcu_dereference_protected().

Then when I did the transumation from
rcu_read_lock/rcu_dereference_protected/rcu_read_unlock to
rcu_dereference_protected, I bobbled the location of
synchronize_rcu().

- Ted

P.S. Pedagogically, it might make sense to show an example that only
uses the RCU core API --- I assume using rcu_read_[un]lock() and
rcu_dereference() does work; it's just non-optimal, right? --- and
then introduce the use of rcu_dereference_protected() afterwards.

\
 
 \ /
  Last update: 2018-10-06 07:35    [W:0.121 / U:0.220 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site