Update call_rcu() usage, add synchronize_rcu()
Reported-by: Kyle Hubert <khubert@gmail.com> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
This commit is contained in:
parent
65e423f8ee
commit
ded5e5ed2f
1 changed files with 4 additions and 2 deletions
|
@ -1645,7 +1645,9 @@ the amount of locking which needs to be done.
|
||||||
all the readers who were traversing the list when we deleted the
|
all the readers who were traversing the list when we deleted the
|
||||||
element are finished. We use <function>call_rcu()</function> to
|
element are finished. We use <function>call_rcu()</function> to
|
||||||
register a callback which will actually destroy the object once
|
register a callback which will actually destroy the object once
|
||||||
the readers are finished.
|
all pre-existing readers are finished. Alternatively,
|
||||||
|
<function>synchronize_rcu()</function> may be used to block until
|
||||||
|
all pre-existing are finished.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
But how does Read Copy Update know when the readers are
|
But how does Read Copy Update know when the readers are
|
||||||
|
@ -1714,7 +1716,7 @@ the amount of locking which needs to be done.
|
||||||
- object_put(obj);
|
- object_put(obj);
|
||||||
+ list_del_rcu(&obj->list);
|
+ list_del_rcu(&obj->list);
|
||||||
cache_num--;
|
cache_num--;
|
||||||
+ call_rcu(&obj->rcu, cache_delete_rcu, obj);
|
+ call_rcu(&obj->rcu, cache_delete_rcu);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Must be holding cache_lock */
|
/* Must be holding cache_lock */
|
||||||
|
|
Loading…
Add table
Reference in a new issue