Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 57d34a6c authored by Kees Cook's avatar Kees Cook Committed by Paul E. McKenney
Browse files

rcu: Update docs to include kfree_rcu()



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: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
parent 0f9574d8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
			}
+11 −2
Original line number Diff line number Diff line
@@ -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