• Priyanka Jain's avatar
    powerpc/32bit:Store temporary result in r0 instead of r8 · f7b33677
    Priyanka Jain authored
    Commit a9c4e541
    "powerpc/kprobe: Complete kprobe and migrate exception frame"
    introduced a regression:
    
    While returning from exception handling in case of PREEMPT enabled,
    _TIF_NEED_RESCHED bit is checked in TI_FLAGS (thread_info flag) of current
    task. Only if this bit is set, it should continue with the process of
    calling preempt_schedule_irq() to schedule highest priority task if
    available.
    
    Current code assumes that r8 contains TI_FLAGS and check this for
    _TIF_NEED_RESCHED, but as r8 is modified in the code which executes before
    this check, r8 no longer contains the expected TI_FLAGS information.
    
    As a result check for comparison with _TIF_NEED_RESCHED was failing even if
    NEED_RESCHED bit is set in the current thread_info flag. Due to this,
    preempt_schedule_irq() and in turn scheduler was not getting called even if
    highest priority task is ready for execution.
    
    So, store temporary results in r0 instead of r8 to prevent r8 from getting
    modified as subsequent code is dependent on its value.
    Signed-off-by: default avatarPriyanka Jain <Priyanka.Jain@freescale.com>
    CC: <stable@vger.kernel.org> [v3.7+]
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    f7b33677
entry_32.S 35 KB