From: Greg Kroah-Hartman Date: Fri, 21 Jun 2013 17:04:33 +0000 (-0700) Subject: 3.0-stable patches X-Git-Tag: v3.0.84~16 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8405484570fb2d3a32b2742b4c30c08219700f49;p=thirdparty%2Fkernel%2Fstable-queue.git 3.0-stable patches added patches: kvm-x86-remove-vcpu-s-cpl-check-in-host-invoked-xcr-set.patch --- diff --git a/queue-3.0/kvm-x86-remove-vcpu-s-cpl-check-in-host-invoked-xcr-set.patch b/queue-3.0/kvm-x86-remove-vcpu-s-cpl-check-in-host-invoked-xcr-set.patch new file mode 100644 index 00000000000..7138f0a8c5e --- /dev/null +++ b/queue-3.0/kvm-x86-remove-vcpu-s-cpl-check-in-host-invoked-xcr-set.patch @@ -0,0 +1,54 @@ +From 764bcbc5a6d7a2f3e75c9f0e4caa984e2926e346 Mon Sep 17 00:00:00 2001 +From: "Zhanghaoyu (A)" +Date: Fri, 14 Jun 2013 07:36:13 +0000 +Subject: KVM: x86: remove vcpu's CPL check in host-invoked XCR set + +From: "Zhanghaoyu (A)" + +commit 764bcbc5a6d7a2f3e75c9f0e4caa984e2926e346 upstream. + +__kvm_set_xcr function does the CPL check when set xcr. __kvm_set_xcr is +called in two flows, one is invoked by guest, call stack shown as below, + + handle_xsetbv(or xsetbv_interception) + kvm_set_xcr + __kvm_set_xcr + +the other one is invoked by host, for example during system reset: + + kvm_arch_vcpu_ioctl + kvm_vcpu_ioctl_x86_set_xcrs + __kvm_set_xcr + +The former does need the CPL check, but the latter does not. + +Signed-off-by: Zhang Haoyu +[Tweaks to commit message. - Paolo] +Signed-off-by: Paolo Bonzini +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kvm/x86.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +--- a/arch/x86/kvm/x86.c ++++ b/arch/x86/kvm/x86.c +@@ -548,8 +548,6 @@ int __kvm_set_xcr(struct kvm_vcpu *vcpu, + if (index != XCR_XFEATURE_ENABLED_MASK) + return 1; + xcr0 = xcr; +- if (kvm_x86_ops->get_cpl(vcpu) != 0) +- return 1; + if (!(xcr0 & XSTATE_FP)) + return 1; + if ((xcr0 & XSTATE_YMM) && !(xcr0 & XSTATE_SSE)) +@@ -563,7 +561,8 @@ int __kvm_set_xcr(struct kvm_vcpu *vcpu, + + int kvm_set_xcr(struct kvm_vcpu *vcpu, u32 index, u64 xcr) + { +- if (__kvm_set_xcr(vcpu, index, xcr)) { ++ if (kvm_x86_ops->get_cpl(vcpu) != 0 || ++ __kvm_set_xcr(vcpu, index, xcr)) { + kvm_inject_gp(vcpu, 0); + return 1; + } diff --git a/queue-3.0/series b/queue-3.0/series index 94aab0145b7..60f56d6b2d0 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -1,2 +1,3 @@ alsa-usb-audio-work-around-android-accessory-firmware-bug.patch tilepro-work-around-module-link-error-with-gcc-4.7.patch +kvm-x86-remove-vcpu-s-cpl-check-in-host-invoked-xcr-set.patch