Steven Rostedt
7e49fcce1b
trace, lockdep: manual preempt count adding for local_bh_disable
...
Impact: fix to preempt trace triggering lockdep check_flag failure
In local_bh_disable, the use of add_preempt_count causes the
preempt tracer to start recording the time preemption is off.
But because it already modified the preempt_count to show
softirqs disabled, and before it called the lockdep code to
handle this, it causes a state that lockdep can not handle.
The preempt tracer will reset the ring buffer on start of a trace,
and the ring buffer reset code does a spin_lock_irqsave. This
calls into lockdep and lockdep will fail when it detects the
invalid state of having softirqs disabled but the internal
current->softirqs_enabled is still set.
The fix is to manually add the SOFTIRQ_OFFSET to preempt count
and call the preempt tracer code outside the lockdep critical
area.
Thanks to Peter Zijlstra for suggesting this solution.
Signed-off-by: Steven Rostedt <srostedt@redhat.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-01-23 11:10:57 +01:00
..
2009-01-07 08:45:46 -08:00
2009-01-16 14:32:17 -05:00
2009-01-07 11:31:52 -08:00
2009-01-23 11:10:45 +01:00
2008-02-09 23:27:01 -08:00
2009-01-14 14:15:19 +01:00
2009-01-12 16:39:58 -08:00
2009-01-04 15:14:42 -05:00
2008-12-09 02:27:41 -05:00
2009-01-04 15:14:41 -05:00
2009-01-04 15:14:42 -05:00
2009-01-04 15:14:42 -05:00
2008-06-27 18:09:16 +02:00
2008-04-29 08:06:29 -07:00
2009-01-14 14:15:19 +01:00
2008-10-20 08:52:38 -07:00
2008-11-12 17:17:16 -08:00
2009-01-08 08:31:10 -08:00
2009-01-06 15:59:13 -08:00
2008-10-20 08:52:34 -07:00
2009-01-07 11:36:14 -08:00
2009-01-15 16:39:37 -08:00
2008-11-14 10:39:23 +11:00
2009-01-09 13:59:25 -08:00
2008-12-18 13:54:01 +01:00
2009-01-06 15:59:31 -08:00
2008-10-16 11:21:30 -07:00
2009-01-14 14:15:19 +01:00
2009-01-14 14:15:21 +01:00
2008-12-30 16:10:19 -08:00
2009-01-14 14:15:30 +01:00
2008-10-30 11:38:45 -07:00
2008-11-14 10:39:19 +11:00
2009-01-14 14:15:31 +01:00
2009-01-14 14:15:18 +01:00
2009-01-14 14:15:20 +01:00
2008-12-19 22:47:10 +01:00
2008-10-20 08:52:34 -07:00
2008-07-28 14:37:38 +02:00
2008-12-25 09:31:28 +01:00
2009-01-14 14:15:20 +01:00
2008-10-06 13:50:59 -05:00
2009-01-06 15:59:27 -08:00
2009-01-16 14:32:17 -05:00
2009-01-06 10:44:31 -08:00
2008-11-16 09:01:36 +01:00
2008-12-10 08:01:54 -08:00
2008-08-13 12:55:10 +02:00
2008-10-20 15:43:10 +02:00
2008-12-30 16:10:19 -08:00
2009-01-14 09:42:11 -08:00
2008-11-16 09:52:03 +01:00
2009-01-14 14:15:21 +01:00
2008-05-16 16:53:35 +02:00
2008-11-24 10:00:28 +01:00
2008-11-26 08:22:50 +01:00
2009-01-08 08:31:02 -08:00
2008-11-24 18:57:41 -05:00
2009-01-06 15:59:12 -08:00
2008-10-23 12:09:00 -07:00
2008-09-02 19:21:38 -07:00
2009-01-08 08:31:12 -08:00
2008-09-02 19:21:40 -07:00
2008-12-25 13:51:46 +01:00
2009-01-14 14:15:20 +01:00
2009-01-14 14:15:29 +01:00
2009-01-06 15:59:14 -08:00
2009-01-14 14:15:29 +01:00
2009-01-03 18:59:25 +01:00
2009-01-05 10:18:08 +01:00
2008-12-18 21:56:04 +01:00
2009-01-05 10:18:08 +01:00
2009-01-07 23:36:25 +01:00
2008-12-18 21:56:04 +01:00
2009-01-05 10:12:33 +01:00
2008-12-30 06:57:11 +01:00
2009-01-08 08:31:05 -08:00
2009-01-15 16:39:38 -08:00
2008-02-08 09:22:41 -08:00
2008-02-08 09:22:41 -08:00
2008-07-21 21:55:02 -07:00
2008-09-05 21:35:13 -07:00
2007-12-18 15:21:13 +01:00
2008-12-31 09:53:21 +01:00
2009-01-06 11:07:15 +01:00
2008-11-24 17:52:22 +01:00
2009-01-11 02:40:32 +01:00
2009-01-15 21:07:57 +01:00
2008-11-05 10:30:14 +01:00
2008-10-22 10:01:52 +02:00
2009-01-03 19:00:09 +01:00
2009-01-03 18:53:31 +01:00
2009-01-23 11:10:57 +01:00
2008-08-05 14:33:47 -07:00
2009-01-14 14:15:31 +01:00
2009-01-01 10:12:15 +10:30
2009-01-23 11:10:57 +01:00
2009-01-01 10:12:28 +10:30
2008-08-13 13:56:51 +02:00
2008-02-06 10:41:02 -08:00
2008-12-25 11:44:43 +01:00
2009-01-05 08:40:14 +10:30
2009-01-14 14:15:16 +01:00
2009-01-14 14:15:31 +01:00
2008-10-30 18:30:09 +11:00
2009-01-15 10:38:56 -08:00
2009-01-01 10:12:28 +10:30
2009-01-06 15:59:20 -08:00
2009-01-14 14:15:18 +01:00
2008-05-02 16:18:42 -07:00
2009-01-14 14:15:29 +01:00
2008-11-16 09:52:03 +01:00
2009-01-06 15:59:09 -08:00
2009-01-14 14:15:26 +01:00
2009-01-12 16:04:37 +01:00
2008-11-24 18:57:41 -05:00
2008-12-28 12:27:58 -08:00
2008-10-16 11:21:47 -07:00
2008-08-23 12:14:12 -07:00
2008-10-16 11:21:31 -07:00
2009-01-14 12:11:43 +01:00