linux/arch/arm/kvm
Marek Majtyka 45258bdd7f arm: KVM: Fix incorrect device to IPA mapping
[ Upstream commit ca09f02f12 ]

A critical bug has been found in device memory stage1 translation for
VMs with more then 4GB of address space. Once vm_pgoff size is smaller
then pa (which is true for LPAE case, u32 and u64 respectively) some
more significant bits of pa may be lost as a shift operation is performed
on u32 and later cast onto u64.

Example: vm_pgoff(u32)=0x00210030, PAGE_SHIFT=12
        expected pa(u64):   0x0000002010030000
        produced pa(u64):   0x0000000010030000

The fix is to change the order of operations (casting first onto phys_addr_t
and then shifting).

Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
[maz: fixed changelog and patch formatting]
Cc: stable@vger.kernel.org
Signed-off-by: Marek Majtyka <marek.majtyka@tieto.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
History 2015-10-27 22:12:47 -04:00
..
arm.c KVM: arm/arm64: check IRQ number on userland injection 2015-05-17 19:11:50 -04:00
coproc.c KVM: ARM/arm64: avoid returning negative error code as bool 2014-08-27 22:49:45 +02:00
coproc.h ARM: KVM: trap VM system registers until MMU and caches are ON 2014-03-03 01:15:24 +00:00
coproc_a7.c ARM: KVM: trap VM system registers until MMU and caches are ON 2014-03-03 01:15:24 +00:00
coproc_a15.c ARM: KVM: trap VM system registers until MMU and caches are ON 2014-03-03 01:15:24 +00:00
emulate.c KVM: ARM: Fix typo in comments of inject_abt() 2013-10-02 17:29:19 +01:00
guest.c arm/arm64: KVM: Reset the HCR on each vcpu when resetting the vcpu 2015-05-11 07:07:32 -04:00
handle_exit.c arm/arm64: KVM: Complete WFI/WFE instructions 2014-08-29 11:53:53 +02:00
init.S ARM/ARM64: KVM: Nuke Hyp-mode tlbs before enabling MMU 2014-08-29 11:53:26 +02:00
interrupts.S arm: KVM: force execution of HCPTR access on VM exit 2015-07-13 08:50:07 -04:00
interrupts_head.S arm: KVM: force execution of HCPTR access on VM exit 2015-07-13 08:50:07 -04:00
Kconfig ARM: KVM: enable KVM in Kconfig on big-endian systems 2014-07-11 04:57:41 -07:00
Makefile KVM: ARM: vgic: split GICv2 backend from the main vgic code 2014-07-11 04:57:34 -07:00
mmio.c arm/arm64: KVM: MMIO support for BE guest 2013-11-07 19:09:04 +00:00
mmu.c arm: KVM: Fix incorrect device to IPA mapping 2015-10-27 22:12:47 -04:00
perf.c ARM: KVM: add support for minimal host vs guest profiling 2013-04-28 21:44:01 -07:00
psci.c ARM: kvm: psci: fix handling of unimplemented functions 2015-07-03 23:02:32 -04:00
reset.c Updates for KVM/ARM, take 3 supporting more than 4 CPUs. 2013-11-11 12:02:27 +01:00
trace.h ARM: KVM: Simplify tracepoint text 2013-08-30 15:47:53 -07:00