• James Hogan's avatar
    MIPS: Fix watchpoint restoration · 68d64569
    James Hogan authored
    commit a7e89326 upstream.
    
    Commit f51246ef ("MIPS: Get rid of finish_arch_switch().") moved the
    __restore_watch() call from finish_arch_switch() (i.e. after resume()
    returns) to before the resume() call in switch_to(). This results in
    watchpoints only being restored when a task is descheduled, preventing
    the watchpoints from being effective most of the time, except due to
    chance before the watchpoints are lazily removed.
    
    Fix the call sequence from switch_to() through to
    mips_install_watch_registers() to pass the task_struct pointer of the
    next task, instead of using current. This allows the watchpoints for the
    next (non-current) task to be restored without reintroducing
    finish_arch_switch().
    
    Fixes: f51246ef ("MIPS: Get rid of finish_arch_switch().")
    Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
    Cc: Paul Burton <paul.burton@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/12726/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    68d64569
watch.h 827 Bytes