Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12:Update
xen
59ef666f-x86-fix-GS-base-dirty-determination.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 59ef666f-x86-fix-GS-base-dirty-determination.patch of Package xen
# Commit 91f85280b9b80852352fcad73d94ed29fafb88da # Date 2017-10-24 18:12:31 +0200 # Author Jan Beulich <jbeulich@suse.com> # Committer Jan Beulich <jbeulich@suse.com> x86: fix GS-base-dirty determination load_segments() writes the two MSRs in their "canonical" positions (GS_BASE for the user base, SHADOW_GS_BASE for the kernel one) and uses SWAPGS to switch them around if the incoming vCPU is in kernel mode. In order to not leave a stale kernel address in GS_BASE when the incoming guest is in user mode, the check on the outgoing vCPU needs to be dependent upon the mode it is currently in, rather than blindly looking at the user base. Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com> --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -1350,7 +1350,8 @@ static void save_segments(struct vcpu *v if ( regs->gs & ~3 ) v->arch.pv_vcpu.gs_base_user = 0; } - if ( v->arch.pv_vcpu.gs_base_user ) + if ( v->arch.flags & TF_kernel_mode ? v->arch.pv_vcpu.gs_base_kernel + : v->arch.pv_vcpu.gs_base_user ) dirty_segment_mask |= DIRTY_GS_BASE_USER; this_cpu(dirty_segment_mask) = dirty_segment_mask;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor