diff options
author | Marc Zyngier <marc.zyngier@arm.com> | 2016-07-18 11:16:26 -0400 |
---|---|---|
committer | Marc Zyngier <marc.zyngier@arm.com> | 2016-07-18 13:15:16 -0400 |
commit | c0091073dd775d0446a9f88dda8c9a86b64340b2 (patch) | |
tree | 702b64e1d6557399aa7c377ee79d5e0aa6fcc1b0 | |
parent | d97594e6bc1b4aaad3ccae3ef678513b63dd5221 (diff) |
KVM: arm64: vgic-its: Fix handling of indirect tables
The current code will fail on valid indirect tables, and happily
use the ones that are pointing out of the guest RAM. Funny what a
small "!" can do for you...
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
-rw-r--r-- | virt/kvm/arm/vgic/vgic-its.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c index f427fa2f7263..d6697c4d81ec 100644 --- a/virt/kvm/arm/vgic/vgic-its.c +++ b/virt/kvm/arm/vgic/vgic-its.c | |||
@@ -702,9 +702,9 @@ static bool vgic_its_check_device_id(struct kvm *kvm, struct vgic_its *its, | |||
702 | return false; | 702 | return false; |
703 | 703 | ||
704 | /* Each 1st level entry is represented by a 64-bit value. */ | 704 | /* Each 1st level entry is represented by a 64-bit value. */ |
705 | if (!kvm_read_guest(kvm, | 705 | if (kvm_read_guest(kvm, |
706 | BASER_ADDRESS(r) + index * sizeof(indirect_ptr), | 706 | BASER_ADDRESS(r) + index * sizeof(indirect_ptr), |
707 | &indirect_ptr, sizeof(indirect_ptr))) | 707 | &indirect_ptr, sizeof(indirect_ptr))) |
708 | return false; | 708 | return false; |
709 | 709 | ||
710 | /* check the valid bit of the first level entry */ | 710 | /* check the valid bit of the first level entry */ |