]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
rcu: Update docs to include kfree_rcu()
authorKees Cook <keescook@chromium.org>
Fri, 19 Oct 2012 16:48:30 +0000 (09:48 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Thu, 8 Nov 2012 19:44:25 +0000 (11:44 -0800)
Mention kfree_rcu() in the call_rcu() section.  Additionally fix the
example code for list replacement that used the wrong structure element.

Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Documentation/RCU/listRCU.txt
Documentation/RCU/whatisRCU.txt

index 4349c1487e919ce0e49702313229027a18bc7245..adb5a37828467c1cc1393b03495fc11c4654e6e7 100644 (file)
@@ -205,7 +205,7 @@ RCU ("read-copy update") its name.  The RCU code is as follows:
                                audit_copy_rule(&ne->rule, &e->rule);
                                ne->rule.action = newaction;
                                ne->rule.file_count = newfield_count;
-                               list_replace_rcu(e, ne);
+                               list_replace_rcu(&e->list, &ne->list);
                                call_rcu(&e->rcu, audit_free_rule);
                                return 0;
                        }
index bf0f6de2aa00c8d6ee482890bc2bd05434b772c2..160ac5557e97f19d2126312d380a5eae4d05b9f9 100644 (file)
@@ -499,6 +499,8 @@ The foo_reclaim() function might appear as follows:
        {
                struct foo *fp = container_of(rp, struct foo, rcu);
 
+               foo_cleanup(fp->a);
+
                kfree(fp);
        }
 
@@ -521,6 +523,12 @@ o  Use call_rcu() -after- removing a data element from an
        read-side critical sections that might be referencing that
        data item.
 
+If the callback for call_rcu() is not doing anything more than calling
+kfree() on the structure, you can use kfree_rcu() instead of call_rcu()
+to avoid having to write your own callback:
+
+       kfree_rcu(old_fp, rcu);
+
 Again, see checklist.txt for additional rules governing the use of RCU.
 
 
@@ -773,8 +781,8 @@ a single atomic update, converting to RCU will require special care.
 
 Also, the presence of synchronize_rcu() means that the RCU version of
 delete() can now block.  If this is a problem, there is a callback-based
-mechanism that never blocks, namely call_rcu(), that can be used in
-place of synchronize_rcu().
+mechanism that never blocks, namely call_rcu() or kfree_rcu(), that can
+be used in place of synchronize_rcu().
 
 
 7.  FULL LIST OF RCU APIs
@@ -813,6 +821,7 @@ RCU:        Critical sections       Grace period            Barrier
        rcu_read_unlock         synchronize_rcu
        rcu_dereference         synchronize_rcu_expedited
                                call_rcu
+                               kfree_rcu
 
 
 bh:    Critical sections       Grace period            Barrier