Files
kernel_arpi/include/linux
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-06 11:07:54 -08:00
2009-01-11 01:34:25 +01:00
2009-01-09 12:37:15 -08:00
2009-01-07 17:38:32 -05:00
2009-01-06 15:59:29 -08:00
2009-01-01 10:12:19 +10:30
2009-01-04 13:33:20 -08:00
2009-01-08 08:31:10 -08:00
2009-01-02 12:19:34 -08:00
2008-12-31 18:07:38 -05:00
2008-12-31 18:07:42 -05:00
2009-01-06 15:59:01 -08:00
2009-01-07 14:29:17 +01:00
2009-01-06 10:50:09 -08:00
2008-12-31 18:07:42 -05:00
2009-01-15 16:39:37 -08:00
2009-01-05 08:40:30 -08:00
2008-12-31 15:11:46 +01:00
2009-01-03 14:11:07 +01:00
2009-01-14 07:32:44 -08:00
2009-01-08 08:31:07 -08:00
2009-01-07 17:38:31 -05:00
2009-01-08 08:31:05 -08:00
2009-01-08 08:31:12 -08:00
2009-01-06 10:44:30 -08:00
2009-01-06 15:59:12 -08:00
2009-01-05 18:31:12 -08:00
2009-01-04 13:33:20 -08:00
2009-01-07 09:58:22 +11:00
2008-12-29 15:34:05 +02:00
2009-01-08 08:31:10 -08:00
2009-01-01 10:12:25 +10:30
2009-01-02 10:19:36 -08:00
2009-01-07 10:00:14 -08:00
2009-01-06 15:59:09 -08:00