Linus Torvalds
cc216c5d42
Fix RCU list iterator use of 'rcu_dereference()'
...
The RCU iterators used 'rcu_dereference()' on an already-fetched RCU
pointer value, which defeats the whole point of the exercise.
When we dereference a pointer protected by RCU, we need to make sure
that we only fetch the value _once_, because if the compiler ends up
re-loading it due to register pressure, the newly reloaded value could
be different from the previously fetched one, and you get inconsistent
results.
Cleaned-up, fixed, and the pointless list_for_each_safe_rcu #define
deleted by Paul Kenney.
Acked-by: Herbert Xu <herbert@gondor.apana.org.au >
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2008-04-21 08:23:35 -07:00
..
2008-04-16 21:09:33 -07:00
2008-04-14 11:15:49 +02:00
2008-04-14 11:15:44 +02:00
2008-04-14 11:15:54 +02:00
2008-04-17 23:56:30 -07:00
2008-03-24 22:26:14 -07:00
2008-03-28 22:14:15 -04:00
2008-03-23 22:04:31 -07:00
2008-04-07 12:19:10 -05:00
2008-04-19 09:59:43 +10:00
2008-03-28 14:45:22 -07:00
2008-04-04 14:46:26 -07:00
2008-04-17 20:05:38 +02:00
2008-03-30 14:20:23 -07:00
2008-03-26 00:45:26 -04:00
2008-04-17 13:25:54 -07:00
2008-03-14 09:49:57 -07:00
2008-04-10 02:02:28 -07:00
2008-03-10 16:33:33 -07:00
2008-04-16 20:09:35 -04:00
2008-03-12 12:34:37 -07:00
2008-03-28 14:45:21 -07:00
2008-04-18 00:46:24 +02:00
2008-04-04 18:36:49 +02:00
2008-04-17 12:22:31 +02:00
2008-04-18 00:46:33 +02:00
2008-04-12 18:48:58 -07:00
2008-04-03 10:06:00 +09:00
2008-04-16 00:48:04 -07:00
2008-03-23 22:05:44 -07:00
2008-04-12 13:43:19 +09:00
2008-03-17 22:48:46 -07:00
2008-03-26 04:39:53 +09:00
2008-04-01 00:22:53 -04:00
2008-04-17 07:47:05 +02:00
2008-04-15 09:25:33 +02:00
2008-04-14 02:30:23 -07:00
2008-04-17 07:47:05 +02:00
2008-04-15 00:30:16 -07:00
2008-03-19 18:53:36 -07:00
2008-04-15 00:27:58 -07:00
2008-04-17 20:05:42 +02:00
2008-03-28 11:05:54 +11:00
2008-04-17 15:44:25 -04:00
2008-04-11 08:29:13 -07:00
2008-04-21 08:23:35 -07:00
2008-03-31 10:41:44 +01:00
2008-04-15 19:35:41 -07:00
2008-03-19 18:53:37 -07:00
2008-03-12 12:34:37 -07:00
2008-03-27 20:47:58 -04:00
2008-04-13 23:21:16 -07:00
2008-04-04 10:44:42 +09:00
2008-04-07 12:15:39 -05:00
2008-03-22 17:18:47 -07:00
2008-04-16 02:02:18 -07:00
2008-04-14 11:15:52 +02:00
2008-04-14 11:15:49 +02:00
2008-03-10 18:01:19 -07:00
2008-03-24 22:38:44 -07:00
2008-04-17 15:31:33 -04:00
2008-04-04 10:44:42 +09:00
2008-03-17 22:46:46 -07:00
2008-03-13 10:09:27 +11:00
2008-04-11 08:06:44 -07:00
2008-04-17 10:42:14 -04:00
2008-03-19 18:53:36 -07:00
2008-04-07 12:15:45 -05:00
2008-03-26 08:28:55 +01:00
2008-04-18 18:18:30 -07:00
2008-04-19 09:53:46 +10:00
2008-04-17 10:43:01 -04:00
2008-04-02 00:10:28 -07:00
2008-04-02 00:10:28 -07:00
2008-04-17 20:05:37 +02:00
2008-04-14 00:05:28 -07:00
2008-04-14 18:53:02 +03:00
2008-03-17 07:49:27 -04:00
2008-04-17 12:22:31 +02:00
2008-03-21 16:33:01 -07:00
2008-04-15 19:35:41 -07:00
2008-04-17 12:22:30 +02:00
2008-03-10 18:01:18 -07:00
2008-03-09 08:42:57 +01:00
2008-03-21 16:43:48 +01:00
2008-04-07 12:19:10 -05:00
2008-04-17 20:05:37 +02:00
2008-04-17 20:05:36 +02:00
2008-03-23 22:06:51 -07:00
2008-03-24 22:26:14 -07:00
2008-04-07 13:14:22 -07:00