kvm: x86: Fix DPL write back of segment registers
The DPL is stored in the flags and not in the selector. In fact, the RPL may differ from the DPL at some point in time, and so we were corrupting the guest state so far. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
7cc2cc3e26
commit
acaa75507b
@ -602,7 +602,7 @@ static void set_seg(struct kvm_segment *lhs, const SegmentCache *rhs)
|
||||
lhs->limit = rhs->limit;
|
||||
lhs->type = (flags >> DESC_TYPE_SHIFT) & 15;
|
||||
lhs->present = (flags & DESC_P_MASK) != 0;
|
||||
lhs->dpl = rhs->selector & 3;
|
||||
lhs->dpl = (flags >> DESC_DPL_SHIFT) & 3;
|
||||
lhs->db = (flags >> DESC_B_SHIFT) & 1;
|
||||
lhs->s = (flags & DESC_S_MASK) != 0;
|
||||
lhs->l = (flags >> DESC_L_SHIFT) & 1;
|
||||
|
Loading…
Reference in New Issue
Block a user