OSDN Git Service

KVM: arm/arm64: Properly handle faulting of device mappings
authorMarc Zyngier <maz@kernel.org>
Wed, 11 Dec 2019 16:56:48 +0000 (16:56 +0000)
committerMarc Zyngier <maz@kernel.org>
Thu, 12 Dec 2019 16:22:40 +0000 (16:22 +0000)
commit6d674e28f642e3ff676fbae2d8d1b872814d32b6
tree5b9bab0ecf1b4fdcdb0275aa1a5c35db026110a8
parent1ce74e96c2407df2b5867e5d45a70aacb8923c14
KVM: arm/arm64: Properly handle faulting of device mappings

A device mapping is normally always mapped at Stage-2, since there
is very little gain in having it faulted in.

Nonetheless, it is possible to end-up in a situation where the device
mapping has been removed from Stage-2 (userspace munmaped the VFIO
region, and the MMU notifier did its job), but present in a userspace
mapping (userpace has mapped it back at the same address). In such
a situation, the device mapping will be demand-paged as the guest
performs memory accesses.

This requires to be careful when dealing with mapping size, cache
management, and to handle potential execution of a device mapping.

Reported-by: Alexandru Elisei <alexandru.elisei@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Tested-by: Alexandru Elisei <alexandru.elisei@arm.com>
Reviewed-by: James Morse <james.morse@arm.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20191211165651.7889-2-maz@kernel.org
virt/kvm/arm/mmu.c