• James Morse's avatar
    arm64: KVM: Device mappings should be execute-never · e8688ba3
    James Morse authored
    Since commit 2f6ea23f ("arm64: KVM: Avoid marking pages as XN in
    Stage-2 if CTR_EL0.DIC is set"), KVM has stopped marking normal memory
    as execute-never at stage2 when the system supports D->I Coherency at
    the PoU. This avoids KVM taking a trap when the page is first executed,
    in order to clean it to PoU.
    
    The patch that added this change also wrapped PAGE_S2_DEVICE mappings
    up in this too. The upshot is, if your CPU caches support DIC ...
    you can execute devices.
    
    Revert the PAGE_S2_DEVICE change so PTE_S2_XN is always used
    directly.
    
    Fixes: 2f6ea23f ("arm64: KVM: Avoid marking pages as XN in Stage-2 if CTR_EL0.DIC is set")
    Signed-off-by: default avatarJames Morse <james.morse@arm.com>
    Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
    e8688ba3
pgtable-prot.h 4.28 KB