Frederic Weisbecker
234da7bcdc
sched: Teach might_sleep() about preemptible RCU
...
In practice, it is harmless to voluntarily sleep in a
rcu_read_lock() section if we are running under preempt rcu, but
it is illegal if we build a kernel running non-preemptable rcu.
Currently, might_sleep() doesn't notice sleepable operations
under rcu_read_lock() sections if we are running under
preemptable rcu because preempt_count() is left untouched after
rcu_read_lock() in this case. But we want developers who test
their changes under such config to notice the "sleeping while
atomic" issues.
So we add rcu_read_lock_nesting to prempt_count() in
might_sleep() checks.
[ v2: Handle rcu-tiny ]
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com >
Reviewed-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com >
Cc: Peter Zijlstra <peterz@infradead.org >
LKML-Reference: <1260991265-8451-1-git-send-regression-fweisbec@gmail.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-12-17 09:46:44 +01:00
..
2009-12-14 00:26:26 +01:00
2009-12-09 19:52:01 -08:00
2009-12-15 08:59:33 -08:00
2009-12-03 13:23:12 -08:00
2009-12-14 12:49:47 +11:00
2009-12-14 10:22:11 -08:00
2009-10-27 16:47:55 -04:00
2009-12-03 15:58:56 -05:00
2009-12-11 15:34:40 -08:00
2009-12-03 18:01:23 -05:00
2009-09-30 16:12:20 -07:00
2009-12-15 08:53:35 -08:00
2009-12-03 09:24:48 +01:00
2009-12-04 23:41:47 +01:00
2009-12-03 19:28:51 +01:00
2009-12-04 15:39:55 +01:00
2009-12-08 19:28:09 -08:00
2009-12-05 15:32:03 -08:00
2009-12-05 15:32:03 -08:00
2009-12-09 17:09:36 +11:00
2009-12-06 21:10:56 +01:00
2009-12-02 22:07:23 -08:00
2009-12-15 08:53:28 -08:00
2009-12-15 08:53:32 -08:00
2009-12-10 23:52:27 +00:00
2009-12-11 11:24:51 -08:00
2009-12-10 23:52:01 +00:00
2009-12-10 23:52:22 +00:00
2009-12-10 23:52:05 +00:00
2009-12-08 19:26:55 -08:00
2009-12-15 08:53:25 -08:00
2009-12-15 08:53:33 -08:00
2009-12-15 08:53:27 -08:00
2009-12-03 13:18:04 -08:00
2009-12-10 15:02:51 +01:00
2009-12-10 15:02:53 +01:00
2009-12-10 09:34:40 -08:00
2009-12-03 12:14:36 -08:00
2009-12-11 11:24:52 -08:00
2009-12-10 15:02:50 +01:00
2009-12-09 13:55:26 -05:00
2009-12-03 11:58:47 +00:00
2009-12-08 20:30:41 -08:00
2009-12-14 23:55:34 +01:00
2009-12-15 08:53:12 -08:00
2009-12-14 10:10:55 -08:00
2009-12-01 14:47:32 +08:00
2009-12-14 21:17:29 +01:00
2009-12-02 21:58:33 -08:00
2009-11-28 15:05:05 -05:00
2009-12-08 20:42:28 -08:00
2009-11-26 16:00:36 -08:00
2009-12-09 19:43:33 -08:00
2009-12-03 12:14:38 -08:00
2009-12-15 09:02:01 -08:00
2009-12-02 23:38:13 -08:00
2009-12-04 16:36:18 +01:00
2009-12-14 23:55:33 +01:00
2009-12-11 15:18:07 -08:00
2009-12-15 08:53:26 -08:00
2007-08-22 19:52:45 -07:00
2009-12-11 15:18:03 -08:00
2009-12-15 08:53:26 -08:00
2009-12-15 08:53:20 -08:00
2009-12-03 09:32:17 +02:00
2009-12-09 17:14:38 +11:00
2009-12-09 19:42:25 -08:00
2009-12-15 08:53:36 -08:00
2009-12-15 08:53:20 -08:00
2009-12-15 08:53:12 -08:00
2009-12-15 08:53:20 -08:00
2009-12-15 08:53:24 -08:00
2009-12-11 11:24:54 -08:00
2009-12-05 15:22:26 -08:00
2009-12-03 15:59:22 -08:00
2009-12-05 16:08:40 -05:00
2009-12-04 15:55:38 -05:00
2009-12-05 16:08:40 -05:00
2009-11-28 15:05:05 -05:00
2009-12-15 08:53:13 -08:00
2009-12-15 08:53:13 -08:00
2009-12-01 16:15:50 -08:00
2009-12-15 08:53:12 -08:00
2009-12-09 12:12:44 +02:00
2009-12-15 08:53:17 -08:00
2009-12-12 14:27:24 -08:00
2009-12-14 10:11:34 -08:00
2009-12-04 15:56:19 -08:00
2009-12-08 10:02:12 +09:00
2009-12-14 23:55:34 +01:00
2009-12-04 15:39:55 +01:00
2009-12-11 11:24:55 -08:00
2009-12-14 23:55:33 +01:00
2009-12-06 16:17:57 +01:00
2009-12-15 08:53:25 -08:00
2009-12-03 11:43:23 +00:00
2009-12-02 09:55:33 +01:00
2009-12-10 15:02:54 +01:00
2009-12-17 09:46:44 +01:00
2009-12-17 09:46:44 +01:00
2009-12-15 08:53:20 -08:00
2009-12-14 23:55:33 +01:00
2009-12-14 23:55:33 +01:00
2009-12-14 23:55:32 +01:00
2009-12-14 23:55:33 +01:00
2009-12-15 08:53:26 -08:00
2009-12-16 19:01:58 +01:00
2009-12-04 15:39:55 +01:00
2009-11-30 12:02:53 +09:00
2009-12-02 19:57:15 -08:00
2009-12-11 09:17:02 +01:00
2009-12-01 08:20:31 -08:00
2009-12-11 09:17:02 +01:00
2009-12-14 23:55:33 +01:00
2009-12-14 23:55:33 +01:00
2009-12-14 23:55:32 +01:00
2009-12-14 23:55:32 +01:00
2009-12-14 23:55:32 +01:00
2009-12-14 23:55:33 +01:00
2009-12-15 08:53:34 -08:00
2009-12-15 08:53:16 -08:00
2009-12-11 06:44:29 -05:00
2009-12-09 19:43:33 -08:00
2009-12-02 22:07:25 -08:00
2009-12-08 19:30:19 -08:00
2009-12-09 14:05:49 -05:00
2009-12-15 08:53:28 -08:00
2009-12-11 11:55:26 -08:00
2009-12-11 11:55:27 -08:00
2009-12-10 22:55:37 +01:00
2009-11-29 22:03:04 +01:00
2009-12-09 19:50:49 -08:00
2009-12-15 08:53:16 -08:00
2009-12-15 08:53:28 -08:00
2009-12-03 13:54:25 +01:00