2.6.35-longterm review patch. If anyone has any objections, please let me know.
------------------ From: Avi Kivity <[email protected]> commit 0a77fe4c188e25917799f2356d4aa5e6d80c39a2 upstream. If fs or gs refer to the ldt, they must be reloaded after the ldt. Reorder the code to that effect. Userspace code that uses the ldt with kvm is nonexistent, so this doesn't fix a user-visible bug. Signed-off-by: Avi Kivity <[email protected]> Signed-off-by: Marcelo Tosatti <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]> Signed-off-by: Andi Kleen <[email protected]> --- arch/x86/kvm/svm.c | 2 +- arch/x86/kvm/vmx.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) Index: linux-2.6.35.y/arch/x86/kvm/svm.c =================================================================== --- linux-2.6.35.y.orig/arch/x86/kvm/svm.c 2011-03-29 23:53:08.796312600 -0700 +++ linux-2.6.35.y/arch/x86/kvm/svm.c 2011-03-29 23:53:15.697136026 -0700 @@ -3185,6 +3185,7 @@ vcpu->arch.regs[VCPU_REGS_RIP] = svm->vmcb->save.rip; load_host_msrs(vcpu); + kvm_load_ldt(ldt_selector); loadsegment(fs, fs_selector); #ifdef CONFIG_X86_64 load_gs_index(gs_selector); @@ -3192,7 +3193,6 @@ #else loadsegment(gs, gs_selector); #endif - kvm_load_ldt(ldt_selector); reload_tss(vcpu); Index: linux-2.6.35.y/arch/x86/kvm/vmx.c =================================================================== --- linux-2.6.35.y.orig/arch/x86/kvm/vmx.c 2011-03-29 23:53:08.868310757 -0700 +++ linux-2.6.35.y/arch/x86/kvm/vmx.c 2011-03-29 23:53:32.094716453 -0700 @@ -789,8 +789,6 @@ ++vmx->vcpu.stat.host_state_reload; vmx->host_state.loaded = 0; - if (vmx->host_state.fs_reload_needed) - loadsegment(fs, vmx->host_state.fs_sel); if (vmx->host_state.gs_ldt_reload_needed) { kvm_load_ldt(vmx->host_state.ldt_sel); #ifdef CONFIG_X86_64 @@ -800,6 +798,8 @@ loadsegment(gs, vmx->host_state.gs_sel); #endif } + if (vmx->host_state.fs_reload_needed) + loadsegment(fs, vmx->host_state.fs_sel); reload_tss(); #ifdef CONFIG_X86_64 if (is_long_mode(&vmx->vcpu)) { _______________________________________________ stable mailing list [email protected] http://linux.kernel.org/mailman/listinfo/stable
