• Mark Rutland's avatar
    arm64: ensure ERET from kthread is illegal · f80d0340
    Mark Rutland authored
    For consistency, all tasks have a pt_regs reserved at the highest
    portion of their task stack. Among other things, this ensures that a
    task's SP is always pointing within its stack rather than pointing
    immediately past the end.
    
    While it is never legitimate to ERET from a kthread, we take pains to
    initialize pt_regs for kthreads as if this were legitimate. As this is
    never legitimate, the effects of an erroneous return are rarely tested.
    
    Let's simplify things by initializing a kthread's pt_regs such that an
    ERET is caught as an illegal exception return, and removing the explicit
    initialization of other exception context. Note that as
    spectre_v4_enable_task_mitigation() only manipulates the PSTATE within
    the unused regs this is safe to remove.
    
    As user tasks will have their exception context initialized via
    start_thread() or start_compat_thread(), this should only impact cases
    where something has gone very wrong and we'd like that to be clearly
    indicated.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20201113124937.20574-2-mark.rutland@arm.comSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    f80d0340
process.c 18 KB