summaryrefslogtreecommitdiffstats
path: root/arch/arm64
diff options
context:
space:
mode:
authorCatalin Marinas <catalin.marinas@arm.com>2012-10-08 18:04:21 +0100
committerCatalin Marinas <catalin.marinas@arm.com>2012-10-08 18:04:21 +0100
commit6916fd086f0c5d7871ad3986300ba30d63616925 (patch)
treeb0a4be0ca36e36e65ff7ebd63c8405769c957130 /arch/arm64
parente048d004a5392e3d6d78b0a53335391f87d724ec (diff)
downloadlinux-6916fd086f0c5d7871ad3986300ba30d63616925.tar.gz
linux-6916fd086f0c5d7871ad3986300ba30d63616925.tar.bz2
linux-6916fd086f0c5d7871ad3986300ba30d63616925.zip
arm64: Enable interrupts before calling do_notify_resume()
task_work_run() implementation had the side effect of enabling interrupts. With commit ac3d0da8 (task_work: Make task_work_add() lockless), interrupts are no longer enabled revealing the bug in the arch code. This patch enables the interrupt explicitly before calling do_notify_resume(). Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch/arm64')
-rw-r--r--arch/arm64/kernel/entry.S1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
index 38cf853a3667..6538928ff1ab 100644
--- a/arch/arm64/kernel/entry.S
+++ b/arch/arm64/kernel/entry.S
@@ -583,6 +583,7 @@ work_pending:
mov x0, sp // 'regs'
tst x2, #PSR_MODE_MASK // user mode regs?
b.ne no_work_pending // returning to kernel
+ enable_irq // enable interrupts for do_notify_resume()
bl do_notify_resume
b ret_to_user
work_resched: