diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2006-08-27 07:26:34 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-09-20 09:58:35 -0400 |
commit | b36e4758dc1b9ff1f6d97e951edba22366230d11 (patch) | |
tree | 3419ae3d588bdc1ecc51748c63077cb18ac974c3 /kernel/fork.c | |
parent | 7ad1bcb25c5623f1f87c50fdf2272f58ff91db5a (diff) |
[ARM] Fix kernel/fork.c for lockdep on ARM
ARM has interrupts enabled over context switches (iow, has
__ARCH_WANT_INTERRUPTS_ON_CTXSW defined.) The lockdep code in fork.c
assumes that interrupts are always disabled. Fix this wrong
assumption by making the initialisation of 'p->hardirqs_enabled'
depend on __ARCH_WANT_INTERRUPTS_ON_CTXSW.
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'kernel/fork.c')
-rw-r--r-- | kernel/fork.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index f9b014e3e70..8f76adf1c6a 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -1056,7 +1056,11 @@ static struct task_struct *copy_process(unsigned long clone_flags, | |||
1056 | #endif | 1056 | #endif |
1057 | #ifdef CONFIG_TRACE_IRQFLAGS | 1057 | #ifdef CONFIG_TRACE_IRQFLAGS |
1058 | p->irq_events = 0; | 1058 | p->irq_events = 0; |
1059 | #ifdef __ARCH_WANT_INTERRUPTS_ON_CTXSW | ||
1060 | p->hardirqs_enabled = 1; | ||
1061 | #else | ||
1059 | p->hardirqs_enabled = 0; | 1062 | p->hardirqs_enabled = 0; |
1063 | #endif | ||
1060 | p->hardirq_enable_ip = 0; | 1064 | p->hardirq_enable_ip = 0; |
1061 | p->hardirq_enable_event = 0; | 1065 | p->hardirq_enable_event = 0; |
1062 | p->hardirq_disable_ip = _THIS_IP_; | 1066 | p->hardirq_disable_ip = _THIS_IP_; |