From d5696bdfacce2ae46a6d0f1a36ecb002e35fe202 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Thu, 3 May 2007 00:18:34 +0100 Subject: [PATCH] --- yaml --- r: 54011 b: refs/heads/master c: 99cce8f7b10716f8fdbaca21a7f3ba000119ad3b h: refs/heads/master i: 54009: e464f16b9d3b41686b515f3ad9fc1c0c6ecca40a 54007: 1cebda4f16d5ddc5755c1b31daa13014bddb1afb v: v3 --- [refs] | 2 +- trunk/arch/arm/kernel/traps.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 55c36e4a6ccf..448999671ce0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f16fb1ecc5a1cb2f7cc595179d1fe55e711e599f +refs/heads/master: 99cce8f7b10716f8fdbaca21a7f3ba000119ad3b diff --git a/trunk/arch/arm/kernel/traps.c b/trunk/arch/arm/kernel/traps.c index 6055ab4b58d9..f05e66b0f868 100644 --- a/trunk/arch/arm/kernel/traps.c +++ b/trunk/arch/arm/kernel/traps.c @@ -286,6 +286,7 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs) struct undef_hook *hook; siginfo_t info; void __user *pc; + unsigned long flags; /* * According to the ARM ARM, PC is 2 or 4 bytes ahead, @@ -304,7 +305,7 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs) get_user(instr, (u32 __user *)pc); } - spin_lock_irq(&undef_lock); + spin_lock_irqsave(&undef_lock, flags); list_for_each_entry(hook, &undef_hook, node) { if ((instr & hook->instr_mask) == hook->instr_val && (regs->ARM_cpsr & hook->cpsr_mask) == hook->cpsr_val) { @@ -314,7 +315,7 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs) } } } - spin_unlock_irq(&undef_lock); + spin_unlock_irqrestore(&undef_lock, flags); #ifdef CONFIG_DEBUG_USER if (user_debug & UDBG_UNDEFINED) {