summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorDipankar Sarma <dipankar@in.ibm.com>2004-08-22 22:57:30 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2004-08-22 22:57:30 -0700
commitf0f4d6e41008746f51db2c795469e1707e516672 (patch)
tree3a2e58897a1bdfc8bb4bb19027108d5e6d9de490 /include/linux
parentbcce63134d465edc461f81ef23627cde4227e05a (diff)
[PATCH] RCU - cpu offline fix
This fixes the RCU cpu offline code which was broken by singly-linked RCU changes. Nathan pointed out the problems and submitted a patch for this. This is an optimal fix - no need to iterate through the list of callbacks, just use the tail pointers and attach the list from the dead cpu. Signed-off-by: Nathan Lynch <nathanl@austin.ibm.com> Signed-off-by: Dipankar Sarma <dipankar@in.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/rcupdate.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
index 10c4b8f24f08..226ce765c031 100644
--- a/include/linux/rcupdate.h
+++ b/include/linux/rcupdate.h
@@ -98,6 +98,7 @@ struct rcu_data {
struct rcu_head *nxtlist;
struct rcu_head **nxttail;
struct rcu_head *curlist;
+ struct rcu_head **curtail;
};
DECLARE_PER_CPU(struct rcu_data, rcu_data);
@@ -111,6 +112,7 @@ extern struct rcu_ctrlblk rcu_ctrlblk;
#define RCU_nxtlist(cpu) (per_cpu(rcu_data, (cpu)).nxtlist)
#define RCU_curlist(cpu) (per_cpu(rcu_data, (cpu)).curlist)
#define RCU_nxttail(cpu) (per_cpu(rcu_data, (cpu)).nxttail)
+#define RCU_curtail(cpu) (per_cpu(rcu_data, (cpu)).curtail)
static inline int rcu_pending(int cpu)
{