diff options
-rw-r--r-- | include/linux/rculist_nulls.h | 2 | ||||
-rw-r--r-- | include/linux/rcupdate.h | 6 | ||||
-rw-r--r-- | include/linux/rcutree.h | 2 | ||||
-rw-r--r-- | kernel/rcupdate.c | 4 | ||||
-rw-r--r-- | kernel/rcutorture.c | 28 | ||||
-rw-r--r-- | kernel/rcutree.c | 2 | ||||
-rw-r--r-- | kernel/rcutree.h | 2 | ||||
-rw-r--r-- | kernel/rcutree_plugin.h | 3 | ||||
-rw-r--r-- | kernel/rcutree_trace.c | 2 |
9 files changed, 26 insertions, 25 deletions
diff --git a/include/linux/rculist_nulls.h b/include/linux/rculist_nulls.h index f9ddd03961a8..589a40919f01 100644 --- a/include/linux/rculist_nulls.h +++ b/include/linux/rculist_nulls.h | |||
@@ -102,7 +102,7 @@ static inline void hlist_nulls_add_head_rcu(struct hlist_nulls_node *n, | |||
102 | */ | 102 | */ |
103 | #define hlist_nulls_for_each_entry_rcu(tpos, pos, head, member) \ | 103 | #define hlist_nulls_for_each_entry_rcu(tpos, pos, head, member) \ |
104 | for (pos = rcu_dereference((head)->first); \ | 104 | for (pos = rcu_dereference((head)->first); \ |
105 | (!is_a_nulls(pos)) && \ | 105 | (!is_a_nulls(pos)) && \ |
106 | ({ tpos = hlist_nulls_entry(pos, typeof(*tpos), member); 1; }); \ | 106 | ({ tpos = hlist_nulls_entry(pos, typeof(*tpos), member); 1; }); \ |
107 | pos = rcu_dereference(pos->next)) | 107 | pos = rcu_dereference(pos->next)) |
108 | 108 | ||
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index 39dce83c4865..6fe0363724e9 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Read-Copy Update mechanism for mutual exclusion | 2 | * Read-Copy Update mechanism for mutual exclusion |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or modify | 4 | * This program is free software; you can redistribute it and/or modify |
5 | * it under the terms of the GNU General Public License as published by | 5 | * it under the terms of the GNU General Public License as published by |
@@ -18,7 +18,7 @@ | |||
18 | * Copyright IBM Corporation, 2001 | 18 | * Copyright IBM Corporation, 2001 |
19 | * | 19 | * |
20 | * Author: Dipankar Sarma <dipankar@in.ibm.com> | 20 | * Author: Dipankar Sarma <dipankar@in.ibm.com> |
21 | * | 21 | * |
22 | * Based on the original work by Paul McKenney <paulmck@us.ibm.com> | 22 | * Based on the original work by Paul McKenney <paulmck@us.ibm.com> |
23 | * and inputs from Rusty Russell, Andrea Arcangeli and Andi Kleen. | 23 | * and inputs from Rusty Russell, Andrea Arcangeli and Andi Kleen. |
24 | * Papers: | 24 | * Papers: |
@@ -26,7 +26,7 @@ | |||
26 | * http://lse.sourceforge.net/locking/rclock_OLS.2001.05.01c.sc.pdf (OLS2001) | 26 | * http://lse.sourceforge.net/locking/rclock_OLS.2001.05.01c.sc.pdf (OLS2001) |
27 | * | 27 | * |
28 | * For detailed explanation of Read-Copy Update mechanism see - | 28 | * For detailed explanation of Read-Copy Update mechanism see - |
29 | * http://lse.sourceforge.net/locking/rcupdate.html | 29 | * http://lse.sourceforge.net/locking/rcupdate.html |
30 | * | 30 | * |
31 | */ | 31 | */ |
32 | 32 | ||
diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h index 00d08c0cbcc1..37682770e9d2 100644 --- a/include/linux/rcutree.h +++ b/include/linux/rcutree.h | |||
@@ -24,7 +24,7 @@ | |||
24 | * and inputs from Rusty Russell, Andrea Arcangeli and Andi Kleen. | 24 | * and inputs from Rusty Russell, Andrea Arcangeli and Andi Kleen. |
25 | * | 25 | * |
26 | * For detailed explanation of Read-Copy Update mechanism see - | 26 | * For detailed explanation of Read-Copy Update mechanism see - |
27 | * Documentation/RCU | 27 | * Documentation/RCU |
28 | */ | 28 | */ |
29 | 29 | ||
30 | #ifndef __LINUX_RCUTREE_H | 30 | #ifndef __LINUX_RCUTREE_H |
diff --git a/kernel/rcupdate.c b/kernel/rcupdate.c index 28d2f24e7871..37ac45483082 100644 --- a/kernel/rcupdate.c +++ b/kernel/rcupdate.c | |||
@@ -19,7 +19,7 @@ | |||
19 | * | 19 | * |
20 | * Authors: Dipankar Sarma <dipankar@in.ibm.com> | 20 | * Authors: Dipankar Sarma <dipankar@in.ibm.com> |
21 | * Manfred Spraul <manfred@colorfullife.com> | 21 | * Manfred Spraul <manfred@colorfullife.com> |
22 | * | 22 | * |
23 | * Based on the original work by Paul McKenney <paulmck@us.ibm.com> | 23 | * Based on the original work by Paul McKenney <paulmck@us.ibm.com> |
24 | * and inputs from Rusty Russell, Andrea Arcangeli and Andi Kleen. | 24 | * and inputs from Rusty Russell, Andrea Arcangeli and Andi Kleen. |
25 | * Papers: | 25 | * Papers: |
@@ -27,7 +27,7 @@ | |||
27 | * http://lse.sourceforge.net/locking/rclock_OLS.2001.05.01c.sc.pdf (OLS2001) | 27 | * http://lse.sourceforge.net/locking/rclock_OLS.2001.05.01c.sc.pdf (OLS2001) |
28 | * | 28 | * |
29 | * For detailed explanation of Read-Copy Update mechanism see - | 29 | * For detailed explanation of Read-Copy Update mechanism see - |
30 | * http://lse.sourceforge.net/locking/rcupdate.html | 30 | * http://lse.sourceforge.net/locking/rcupdate.html |
31 | * | 31 | * |
32 | */ | 32 | */ |
33 | #include <linux/types.h> | 33 | #include <linux/types.h> |
diff --git a/kernel/rcutorture.c b/kernel/rcutorture.c index 328a8257c885..233768f21f97 100644 --- a/kernel/rcutorture.c +++ b/kernel/rcutorture.c | |||
@@ -18,7 +18,7 @@ | |||
18 | * Copyright (C) IBM Corporation, 2005, 2006 | 18 | * Copyright (C) IBM Corporation, 2005, 2006 |
19 | * | 19 | * |
20 | * Authors: Paul E. McKenney <paulmck@us.ibm.com> | 20 | * Authors: Paul E. McKenney <paulmck@us.ibm.com> |
21 | * Josh Triplett <josh@freedesktop.org> | 21 | * Josh Triplett <josh@freedesktop.org> |
22 | * | 22 | * |
23 | * See also: Documentation/RCU/torture.txt | 23 | * See also: Documentation/RCU/torture.txt |
24 | */ | 24 | */ |
@@ -50,7 +50,7 @@ | |||
50 | 50 | ||
51 | MODULE_LICENSE("GPL"); | 51 | MODULE_LICENSE("GPL"); |
52 | MODULE_AUTHOR("Paul E. McKenney <paulmck@us.ibm.com> and " | 52 | MODULE_AUTHOR("Paul E. McKenney <paulmck@us.ibm.com> and " |
53 | "Josh Triplett <josh@freedesktop.org>"); | 53 | "Josh Triplett <josh@freedesktop.org>"); |
54 | 54 | ||
55 | static int nreaders = -1; /* # reader threads, defaults to 2*ncpus */ | 55 | static int nreaders = -1; /* # reader threads, defaults to 2*ncpus */ |
56 | static int nfakewriters = 4; /* # fake writer threads */ | 56 | static int nfakewriters = 4; /* # fake writer threads */ |
@@ -110,8 +110,8 @@ struct rcu_torture { | |||
110 | }; | 110 | }; |
111 | 111 | ||
112 | static LIST_HEAD(rcu_torture_freelist); | 112 | static LIST_HEAD(rcu_torture_freelist); |
113 | static struct rcu_torture *rcu_torture_current = NULL; | 113 | static struct rcu_torture *rcu_torture_current; |
114 | static long rcu_torture_current_version = 0; | 114 | static long rcu_torture_current_version; |
115 | static struct rcu_torture rcu_tortures[10 * RCU_TORTURE_PIPE_LEN]; | 115 | static struct rcu_torture rcu_tortures[10 * RCU_TORTURE_PIPE_LEN]; |
116 | static DEFINE_SPINLOCK(rcu_torture_lock); | 116 | static DEFINE_SPINLOCK(rcu_torture_lock); |
117 | static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1], rcu_torture_count) = | 117 | static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1], rcu_torture_count) = |
@@ -124,11 +124,11 @@ static atomic_t n_rcu_torture_alloc_fail; | |||
124 | static atomic_t n_rcu_torture_free; | 124 | static atomic_t n_rcu_torture_free; |
125 | static atomic_t n_rcu_torture_mberror; | 125 | static atomic_t n_rcu_torture_mberror; |
126 | static atomic_t n_rcu_torture_error; | 126 | static atomic_t n_rcu_torture_error; |
127 | static long n_rcu_torture_timers = 0; | 127 | static long n_rcu_torture_timers; |
128 | static struct list_head rcu_torture_removed; | 128 | static struct list_head rcu_torture_removed; |
129 | static cpumask_var_t shuffle_tmp_mask; | 129 | static cpumask_var_t shuffle_tmp_mask; |
130 | 130 | ||
131 | static int stutter_pause_test = 0; | 131 | static int stutter_pause_test; |
132 | 132 | ||
133 | #if defined(MODULE) || defined(CONFIG_RCU_TORTURE_TEST_RUNNABLE) | 133 | #if defined(MODULE) || defined(CONFIG_RCU_TORTURE_TEST_RUNNABLE) |
134 | #define RCUTORTURE_RUNNABLE_INIT 1 | 134 | #define RCUTORTURE_RUNNABLE_INIT 1 |
@@ -267,7 +267,8 @@ struct rcu_torture_ops { | |||
267 | int irq_capable; | 267 | int irq_capable; |
268 | char *name; | 268 | char *name; |
269 | }; | 269 | }; |
270 | static struct rcu_torture_ops *cur_ops = NULL; | 270 | |
271 | static struct rcu_torture_ops *cur_ops; | ||
271 | 272 | ||
272 | /* | 273 | /* |
273 | * Definitions for rcu torture testing. | 274 | * Definitions for rcu torture testing. |
@@ -342,8 +343,8 @@ static struct rcu_torture_ops rcu_ops = { | |||
342 | .sync = synchronize_rcu, | 343 | .sync = synchronize_rcu, |
343 | .cb_barrier = rcu_barrier, | 344 | .cb_barrier = rcu_barrier, |
344 | .stats = NULL, | 345 | .stats = NULL, |
345 | .irq_capable = 1, | 346 | .irq_capable = 1, |
346 | .name = "rcu" | 347 | .name = "rcu" |
347 | }; | 348 | }; |
348 | 349 | ||
349 | static void rcu_sync_torture_deferred_free(struct rcu_torture *p) | 350 | static void rcu_sync_torture_deferred_free(struct rcu_torture *p) |
@@ -641,7 +642,8 @@ rcu_torture_writer(void *arg) | |||
641 | 642 | ||
642 | do { | 643 | do { |
643 | schedule_timeout_uninterruptible(1); | 644 | schedule_timeout_uninterruptible(1); |
644 | if ((rp = rcu_torture_alloc()) == NULL) | 645 | rp = rcu_torture_alloc(); |
646 | if (rp == NULL) | ||
645 | continue; | 647 | continue; |
646 | rp->rtort_pipe_count = 0; | 648 | rp->rtort_pipe_count = 0; |
647 | udelay(rcu_random(&rand) & 0x3ff); | 649 | udelay(rcu_random(&rand) & 0x3ff); |
@@ -1113,7 +1115,7 @@ rcu_torture_init(void) | |||
1113 | printk(KERN_ALERT "rcutorture: invalid torture type: \"%s\"\n", | 1115 | printk(KERN_ALERT "rcutorture: invalid torture type: \"%s\"\n", |
1114 | torture_type); | 1116 | torture_type); |
1115 | mutex_unlock(&fullstop_mutex); | 1117 | mutex_unlock(&fullstop_mutex); |
1116 | return (-EINVAL); | 1118 | return -EINVAL; |
1117 | } | 1119 | } |
1118 | if (cur_ops->init) | 1120 | if (cur_ops->init) |
1119 | cur_ops->init(); /* no "goto unwind" prior to this point!!! */ | 1121 | cur_ops->init(); /* no "goto unwind" prior to this point!!! */ |
@@ -1164,7 +1166,7 @@ rcu_torture_init(void) | |||
1164 | goto unwind; | 1166 | goto unwind; |
1165 | } | 1167 | } |
1166 | fakewriter_tasks = kzalloc(nfakewriters * sizeof(fakewriter_tasks[0]), | 1168 | fakewriter_tasks = kzalloc(nfakewriters * sizeof(fakewriter_tasks[0]), |
1167 | GFP_KERNEL); | 1169 | GFP_KERNEL); |
1168 | if (fakewriter_tasks == NULL) { | 1170 | if (fakewriter_tasks == NULL) { |
1169 | VERBOSE_PRINTK_ERRSTRING("out of memory"); | 1171 | VERBOSE_PRINTK_ERRSTRING("out of memory"); |
1170 | firsterr = -ENOMEM; | 1172 | firsterr = -ENOMEM; |
@@ -1173,7 +1175,7 @@ rcu_torture_init(void) | |||
1173 | for (i = 0; i < nfakewriters; i++) { | 1175 | for (i = 0; i < nfakewriters; i++) { |
1174 | VERBOSE_PRINTK_STRING("Creating rcu_torture_fakewriter task"); | 1176 | VERBOSE_PRINTK_STRING("Creating rcu_torture_fakewriter task"); |
1175 | fakewriter_tasks[i] = kthread_run(rcu_torture_fakewriter, NULL, | 1177 | fakewriter_tasks[i] = kthread_run(rcu_torture_fakewriter, NULL, |
1176 | "rcu_torture_fakewriter"); | 1178 | "rcu_torture_fakewriter"); |
1177 | if (IS_ERR(fakewriter_tasks[i])) { | 1179 | if (IS_ERR(fakewriter_tasks[i])) { |
1178 | firsterr = PTR_ERR(fakewriter_tasks[i]); | 1180 | firsterr = PTR_ERR(fakewriter_tasks[i]); |
1179 | VERBOSE_PRINTK_ERRSTRING("Failed to create fakewriter"); | 1181 | VERBOSE_PRINTK_ERRSTRING("Failed to create fakewriter"); |
diff --git a/kernel/rcutree.c b/kernel/rcutree.c index 1b32cdd1b2e2..52b06f6e158c 100644 --- a/kernel/rcutree.c +++ b/kernel/rcutree.c | |||
@@ -25,7 +25,7 @@ | |||
25 | * and inputs from Rusty Russell, Andrea Arcangeli and Andi Kleen. | 25 | * and inputs from Rusty Russell, Andrea Arcangeli and Andi Kleen. |
26 | * | 26 | * |
27 | * For detailed explanation of Read-Copy Update mechanism see - | 27 | * For detailed explanation of Read-Copy Update mechanism see - |
28 | * Documentation/RCU | 28 | * Documentation/RCU |
29 | */ | 29 | */ |
30 | #include <linux/types.h> | 30 | #include <linux/types.h> |
31 | #include <linux/kernel.h> | 31 | #include <linux/kernel.h> |
diff --git a/kernel/rcutree.h b/kernel/rcutree.h index bf8a6f9f134d..8e8287a983c2 100644 --- a/kernel/rcutree.h +++ b/kernel/rcutree.h | |||
@@ -142,7 +142,7 @@ struct rcu_data { | |||
142 | */ | 142 | */ |
143 | struct rcu_head *nxtlist; | 143 | struct rcu_head *nxtlist; |
144 | struct rcu_head **nxttail[RCU_NEXT_SIZE]; | 144 | struct rcu_head **nxttail[RCU_NEXT_SIZE]; |
145 | long qlen; /* # of queued callbacks */ | 145 | long qlen; /* # of queued callbacks */ |
146 | long blimit; /* Upper limit on a processed batch */ | 146 | long blimit; /* Upper limit on a processed batch */ |
147 | 147 | ||
148 | #ifdef CONFIG_NO_HZ | 148 | #ifdef CONFIG_NO_HZ |
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h index 09b7325baad1..1cee04f627eb 100644 --- a/kernel/rcutree_plugin.h +++ b/kernel/rcutree_plugin.h | |||
@@ -370,9 +370,8 @@ static void rcu_preempt_check_callbacks(int cpu) | |||
370 | rcu_preempt_qs(cpu); | 370 | rcu_preempt_qs(cpu); |
371 | return; | 371 | return; |
372 | } | 372 | } |
373 | if (per_cpu(rcu_preempt_data, cpu).qs_pending) { | 373 | if (per_cpu(rcu_preempt_data, cpu).qs_pending) |
374 | t->rcu_read_unlock_special |= RCU_READ_UNLOCK_NEED_QS; | 374 | t->rcu_read_unlock_special |= RCU_READ_UNLOCK_NEED_QS; |
375 | } | ||
376 | } | 375 | } |
377 | 376 | ||
378 | /* | 377 | /* |
diff --git a/kernel/rcutree_trace.c b/kernel/rcutree_trace.c index 0ea1bff69727..c89f5e9fd173 100644 --- a/kernel/rcutree_trace.c +++ b/kernel/rcutree_trace.c | |||
@@ -20,7 +20,7 @@ | |||
20 | * Papers: http://www.rdrop.com/users/paulmck/RCU | 20 | * Papers: http://www.rdrop.com/users/paulmck/RCU |
21 | * | 21 | * |
22 | * For detailed explanation of Read-Copy Update mechanism see - | 22 | * For detailed explanation of Read-Copy Update mechanism see - |
23 | * Documentation/RCU | 23 | * Documentation/RCU |
24 | * | 24 | * |
25 | */ | 25 | */ |
26 | #include <linux/types.h> | 26 | #include <linux/types.h> |