arm64: Enable interrupts before calling do_notify_resume()
authorCatalin Marinas <catalin.marinas@arm.com>
Mon, 8 Oct 2012 17:04:21 +0000 (18:04 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Mon, 8 Oct 2012 17:04:21 +0000 (18:04 +0100)
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>
arch/arm64/kernel/entry.S

index 38cf853a36671cfe57798642b3f1b46be83ac247..6538928ff1ab7bd494df8687645ed323325ecbc3 100644 (file)
@@ -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: