From a350bc24ded3aabf571b39ea81f08d20c6749fec Mon Sep 17 00:00:00 2001 From: Russell King Date: Fri, 5 Sep 2003 18:28:53 +0100 Subject: [PATCH] [ARM] Restore preempt count before reporting unbalanced preempt count On ARM, we oops when we detect that an interrupt handler has unbalanced the preempt count. We should restore the preempt count when we started to handle the interrupt and then cause the oops. --- arch/arm/kernel/entry-armv.S | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 0a5c2ea51b993..f6f64875dfd4b 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S @@ -772,8 +772,8 @@ __irq_svc: sub sp, sp, #S_FRAME_SIZE preempt_return: ldr r0, [r8, #TI_PREEMPT] @ read preempt value teq r0, r7 - strne r0, [r0, -r0] @ bug() str r9, [r8, #TI_PREEMPT] @ restore preempt count + strne r0, [r0, -r0] @ bug() #endif ldr r0, [sp, #S_PSR] @ irqs are already disabled msr spsr, r0 @@ -908,8 +908,8 @@ __irq_usr: sub sp, sp, #S_FRAME_SIZE #ifdef CONFIG_PREEMPT ldr r0, [r8, #TI_PREEMPT] teq r0, r7 - strne r0, [r0, -r0] str r9, [r8, #TI_PREEMPT] + strne r0, [r0, -r0] mov tsk, r8 #else get_thread_info tsk -- 2.53.0