KVM: arm/arm64: VGIC/ITS save/restore: protect kvm_read_guest() calls
authorAndre Przywara <andre.przywara@arm.com>
Fri, 11 May 2018 14:20:15 +0000 (15:20 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 22 May 2018 16:53:57 +0000 (18:53 +0200)
commitb6f6d8bfe779294e58f424bff08eab9914570d9b
tree84fd60d3ab394a6858189bbdc11689741325b2f3
parentb7f0fc1f06155e55ad7c0b3e245a6fd39ca0b6e3
KVM: arm/arm64: VGIC/ITS save/restore: protect kvm_read_guest() calls

commit 711702b57cc3c50b84bd648de0f1ca0a378805be upstream.

kvm_read_guest() will eventually look up in kvm_memslots(), which requires
either to hold the kvm->slots_lock or to be inside a kvm->srcu critical
section.
In contrast to x86 and s390 we don't take the SRCU lock on every guest
exit, so we have to do it individually for each kvm_read_guest() call.
Use the newly introduced wrapper for that.

Cc: Stable <stable@vger.kernel.org> # 4.12+
Reported-by: Jan Glauber <jan.glauber@caviumnetworks.com>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Acked-by: Christoffer Dall <christoffer.dall@arm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
virt/kvm/arm/vgic/vgic-its.c
virt/kvm/arm/vgic/vgic-v3.c