mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 07:13:54 -06:00
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
1 changed files with 1 additions and 1 deletions
|
@ -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…
Add table
Add a link
Reference in a new issue