| From f07afa0462b76a5b9c4f3a43d5ac24fdb86a90c2 Mon Sep 17 00:00:00 2001 |
| From: David Hildenbrand <david@redhat.com> |
| Date: Tue, 6 Mar 2018 14:27:58 +0100 |
| Subject: KVM: s390: fix memory overwrites when not using SCA entries |
| |
| From: David Hildenbrand <david@redhat.com> |
| |
| commit f07afa0462b76a5b9c4f3a43d5ac24fdb86a90c2 upstream. |
| |
| Even if we don't have extended SCA support, we can have more than 64 CPUs |
| if we don't enable any HW features that might use the SCA entries. |
| |
| Now, this works just fine, but we missed a return, which is why we |
| would actually store the SCA entries. If we have more than 64 CPUs, this |
| means writing outside of the basic SCA - bad. |
| |
| Let's fix this. This allows > 64 CPUs when running nested (under vSIE) |
| without random crashes. |
| |
| Fixes: a6940674c384 ("KVM: s390: allow 255 VCPUs when sca entries aren't used") |
| Reported-by: Christian Borntraeger <borntraeger@de.ibm.com> |
| Tested-by: Christian Borntraeger <borntraeger@de.ibm.com> |
| Signed-off-by: David Hildenbrand <david@redhat.com> |
| Message-Id: <20180306132758.21034-1-david@redhat.com> |
| Cc: stable@vger.kernel.org |
| Reviewed-by: Cornelia Huck <cohuck@redhat.com> |
| Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/s390/kvm/kvm-s390.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/arch/s390/kvm/kvm-s390.c |
| +++ b/arch/s390/kvm/kvm-s390.c |
| @@ -2119,6 +2119,7 @@ static void sca_add_vcpu(struct kvm_vcpu |
| /* we still need the basic sca for the ipte control */ |
| vcpu->arch.sie_block->scaoh = (__u32)(((__u64)sca) >> 32); |
| vcpu->arch.sie_block->scaol = (__u32)(__u64)sca; |
| + return; |
| } |
| read_lock(&vcpu->kvm->arch.sca_lock); |
| if (vcpu->kvm->arch.use_esca) { |