• Mark Rutland's avatar
    arm64: fix KASLR boot-time I-cache maintenance · b90b4a60
    Mark Rutland authored
    Commit f80fb3a3 ("arm64: add support for kernel ASLR") missed a
    DSB necessary to complete I-cache maintenance in the primary boot path,
    and hence stale instructions may still be present in the I-cache and may
    be executed until the I-cache maintenance naturally completes.
    
    Since commit 8ec41987
    
     ("arm64: mm: ensure patched kernel text is
    fetched from PoU"), all CPUs invalidate their I-caches after their MMU
    is enabled. Prior a CPU's MMU having been enabled, arbitrary lines may
    have been fetched from the PoC into I-caches. We never patch text
    expected to be executed with the MMU off. Thus, it is unnecessary to
    perform broadcast I-cache maintenance in the primary boot path.
    
    This patch reduces the scope of the I-cache maintenance to the local
    CPU, and adds the missing DSB with similar scope, matching prior
    maintenance in the primary boot path.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Acked-by: default avatarArd Biesehvuel <ard.biesheuvel@linaro.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    b90b4a60
head.S 21.4 KB