From: Greg Kroah-Hartman Date: Mon, 7 Dec 2015 13:43:18 +0000 (-0500) Subject: 4.1-stable patches X-Git-Tag: v3.10.94~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=43fd9eb5344fa93b572701cda85b437a3b418dd6;p=thirdparty%2Fkernel%2Fstable-queue.git 4.1-stable patches added patches: kvm-s390-enable-simd-only-when-no-vcpus-were-created.patch --- diff --git a/queue-4.1/kvm-s390-enable-simd-only-when-no-vcpus-were-created.patch b/queue-4.1/kvm-s390-enable-simd-only-when-no-vcpus-were-created.patch new file mode 100644 index 00000000000..0184c61fd68 --- /dev/null +++ b/queue-4.1/kvm-s390-enable-simd-only-when-no-vcpus-were-created.patch @@ -0,0 +1,47 @@ +From 5967c17b118a2bd1dd1d554cc4eee16233e52bec Mon Sep 17 00:00:00 2001 +From: David Hildenbrand +Date: Fri, 6 Nov 2015 12:08:48 +0100 +Subject: KVM: s390: enable SIMD only when no VCPUs were created + +From: David Hildenbrand + +commit 5967c17b118a2bd1dd1d554cc4eee16233e52bec upstream. + +We should never allow to enable/disable any facilities for the guest +when other VCPUs were already created. + +kvm_arch_vcpu_(load|put) relies on SIMD not changing during runtime. +If somebody would create and run VCPUs and then decides to enable +SIMD, undefined behaviour could be possible (e.g. vector save area +not being set up). + +Acked-by: Christian Borntraeger +Acked-by: Cornelia Huck +Signed-off-by: David Hildenbrand +Signed-off-by: Christian Borntraeger +Signed-off-by: Greg Kroah-Hartman + +--- + arch/s390/kvm/kvm-s390.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +--- a/arch/s390/kvm/kvm-s390.c ++++ b/arch/s390/kvm/kvm-s390.c +@@ -283,12 +283,16 @@ static int kvm_vm_ioctl_enable_cap(struc + r = 0; + break; + case KVM_CAP_S390_VECTOR_REGISTERS: +- if (MACHINE_HAS_VX) { ++ mutex_lock(&kvm->lock); ++ if (atomic_read(&kvm->online_vcpus)) { ++ r = -EBUSY; ++ } else if (MACHINE_HAS_VX) { + set_kvm_facility(kvm->arch.model.fac->mask, 129); + set_kvm_facility(kvm->arch.model.fac->list, 129); + r = 0; + } else + r = -EINVAL; ++ mutex_unlock(&kvm->lock); + break; + case KVM_CAP_S390_USER_STSI: + kvm->arch.user_stsi = 1; diff --git a/queue-4.1/series b/queue-4.1/series index 8540719a573..d470b85bded 100644 --- a/queue-4.1/series +++ b/queue-4.1/series @@ -92,3 +92,4 @@ tty-audit-fix-audit-source.patch tty-fix-tty_send_xchar-lock-order-inversion.patch xhci-workaround-to-get-intel-xhci-reset-working-more-reliably.patch staging-lustre-use-jiffies-for-lp_last_query-times.patch +kvm-s390-enable-simd-only-when-no-vcpus-were-created.patch