]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: s390: reset KVM_REQ_MMU_RELOAD if mapping the prefix failed
authorJulius Niedworok <jniedwor@linux.vnet.ibm.com>
Wed, 3 Aug 2016 14:39:55 +0000 (16:39 +0200)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Fri, 12 Aug 2016 07:11:08 +0000 (09:11 +0200)
commita5f4df2314a4d9f1a6c5c6bf5fce23742581dca3
treee3457792ac4e54969e665477ebbbe8c6869ed9b9
parent0ef1f67d8d2ee93ac453797d6076d6ed38f51197
KVM: s390: reset KVM_REQ_MMU_RELOAD if mapping the prefix failed

When triggering KVM_RUN without a user memory region being mapped
(KVM_SET_USER_MEMORY_REGION) a validity intercept occurs. This could
happen, if the user memory region was not mapped initially or if it
was unmapped after the vcpu is initialized. The function
kvm_s390_handle_requests checks for the KVM_REQ_MMU_RELOAD bit. The
check function always clears this bit. If gmap_mprotect_notify
returns an error code, the mapping failed, but the KVM_REQ_MMU_RELOAD
was not set anymore. So the next time kvm_s390_handle_requests is
called, the execution would fall trough the check for
KVM_REQ_MMU_RELOAD. The bit needs to be resetted, if
gmap_mprotect_notify returns an error code. Resetting the bit with
kvm_make_request(KVM_REQ_MMU_RELOAD, vcpu) fixes the bug.

Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Julius Niedworok <jniedwor@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
arch/s390/kvm/kvm-s390.c