From 784da3f721203dd98c1cbaad1eee28f04d18c837 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Fri, 31 Oct 2014 02:45:24 +0000 Subject: [PATCH] Refresh bugfix/x86/KVM-x86-Emulator-fixes-for-eip-canonical-checks-on-n.patch svn path=/dists/sid/linux/; revision=22000 --- ...-fixes-for-eip-canonical-checks-on-n.patch | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/debian/patches/bugfix/x86/KVM-x86-Emulator-fixes-for-eip-canonical-checks-on-n.patch b/debian/patches/bugfix/x86/KVM-x86-Emulator-fixes-for-eip-canonical-checks-on-n.patch index 7b881af9b..c2b3891b5 100644 --- a/debian/patches/bugfix/x86/KVM-x86-Emulator-fixes-for-eip-canonical-checks-on-n.patch +++ b/debian/patches/bugfix/x86/KVM-x86-Emulator-fixes-for-eip-canonical-checks-on-n.patch @@ -22,11 +22,9 @@ Signed-off-by: Paolo Bonzini arch/x86/kvm/emulate.c | 78 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 54 insertions(+), 24 deletions(-) -diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c -index 0476989..a1b9139 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c -@@ -564,7 +564,8 @@ static int emulate_nm(struct x86_emulate_ctxt *ctxt) +@@ -572,7 +572,8 @@ static int emulate_nm(struct x86_emulate return emulate_exception(ctxt, NM_VECTOR, 0, false); } @@ -36,7 +34,7 @@ index 0476989..a1b9139 100644 { switch (ctxt->op_bytes) { case 2: -@@ -574,16 +575,25 @@ static inline void assign_eip_near(struct x86_emulate_ctxt *ctxt, ulong dst) +@@ -582,16 +583,25 @@ static inline void assign_eip_near(struc ctxt->_eip = (u32)dst; break; case 8: @@ -64,7 +62,7 @@ index 0476989..a1b9139 100644 } static u16 get_segment_selector(struct x86_emulate_ctxt *ctxt, unsigned seg) -@@ -1998,13 +2008,15 @@ static int em_grp45(struct x86_emulate_ctxt *ctxt) +@@ -2004,13 +2014,15 @@ static int em_grp45(struct x86_emulate_c case 2: /* call near abs */ { long int old_eip; old_eip = ctxt->_eip; @@ -82,7 +80,7 @@ index 0476989..a1b9139 100644 break; case 5: /* jmp far */ rc = em_jmp_far(ctxt); -@@ -2039,10 +2051,14 @@ static int em_cmpxchg8b(struct x86_emulate_ctxt *ctxt) +@@ -2042,10 +2054,14 @@ static int em_cmpxchg8b(struct x86_emula static int em_ret(struct x86_emulate_ctxt *ctxt) { @@ -101,7 +99,7 @@ index 0476989..a1b9139 100644 } static int em_ret_far(struct x86_emulate_ctxt *ctxt) -@@ -2323,7 +2339,7 @@ static int em_sysexit(struct x86_emulate_ctxt *ctxt) +@@ -2336,7 +2352,7 @@ static int em_sysexit(struct x86_emulate { const struct x86_emulate_ops *ops = ctxt->ops; struct desc_struct cs, ss; @@ -110,7 +108,7 @@ index 0476989..a1b9139 100644 int usermode; u16 cs_sel = 0, ss_sel = 0; -@@ -2339,6 +2355,9 @@ static int em_sysexit(struct x86_emulate_ctxt *ctxt) +@@ -2352,6 +2368,9 @@ static int em_sysexit(struct x86_emulate else usermode = X86EMUL_MODE_PROT32; @@ -120,7 +118,7 @@ index 0476989..a1b9139 100644 cs.dpl = 3; ss.dpl = 3; ops->get_msr(ctxt, MSR_IA32_SYSENTER_CS, &msr_data); -@@ -2356,6 +2375,9 @@ static int em_sysexit(struct x86_emulate_ctxt *ctxt) +@@ -2369,6 +2388,9 @@ static int em_sysexit(struct x86_emulate ss_sel = cs_sel + 8; cs.d = 0; cs.l = 1; @@ -130,7 +128,7 @@ index 0476989..a1b9139 100644 break; } cs_sel |= SELECTOR_RPL_MASK; -@@ -2364,8 +2386,8 @@ static int em_sysexit(struct x86_emulate_ctxt *ctxt) +@@ -2377,8 +2399,8 @@ static int em_sysexit(struct x86_emulate ops->set_segment(ctxt, cs_sel, &cs, 0, VCPU_SREG_CS); ops->set_segment(ctxt, ss_sel, &ss, 0, VCPU_SREG_SS); @@ -141,7 +139,7 @@ index 0476989..a1b9139 100644 return X86EMUL_CONTINUE; } -@@ -2905,10 +2927,13 @@ static int em_aad(struct x86_emulate_ctxt *ctxt) +@@ -2931,10 +2953,13 @@ static int em_aad(struct x86_emulate_ctx static int em_call(struct x86_emulate_ctxt *ctxt) { @@ -156,7 +154,7 @@ index 0476989..a1b9139 100644 return em_push(ctxt); } -@@ -2940,11 +2965,12 @@ static int em_call_far(struct x86_emulate_ctxt *ctxt) +@@ -2981,11 +3006,12 @@ fail: static int em_ret_near_imm(struct x86_emulate_ctxt *ctxt) { int rc; @@ -173,7 +171,7 @@ index 0476989..a1b9139 100644 if (rc != X86EMUL_CONTINUE) return rc; rsp_increment(ctxt, ctxt->src.val); -@@ -3271,20 +3297,24 @@ static int em_lmsw(struct x86_emulate_ctxt *ctxt) +@@ -3315,20 +3341,24 @@ static int em_lmsw(struct x86_emulate_ct static int em_loop(struct x86_emulate_ctxt *ctxt) { @@ -202,7 +200,7 @@ index 0476989..a1b9139 100644 } static int em_in(struct x86_emulate_ctxt *ctxt) -@@ -4743,7 +4773,7 @@ special_insn: +@@ -4729,7 +4759,7 @@ special_insn: break; case 0x70 ... 0x7f: /* jcc (short) */ if (test_cc(ctxt->b, ctxt->eflags)) @@ -211,7 +209,7 @@ index 0476989..a1b9139 100644 break; case 0x8d: /* lea r16/r32, m */ ctxt->dst.val = ctxt->src.addr.mem.ea; -@@ -4773,7 +4803,7 @@ special_insn: +@@ -4758,7 +4788,7 @@ special_insn: break; case 0xe9: /* jmp rel */ case 0xeb: /* jmp rel short */ @@ -220,7 +218,7 @@ index 0476989..a1b9139 100644 ctxt->dst.type = OP_NONE; /* Disable writeback. */ break; case 0xf4: /* hlt */ -@@ -4898,7 +4928,7 @@ twobyte_insn: +@@ -4878,7 +4908,7 @@ twobyte_insn: break; case 0x80 ... 0x8f: /* jnz rel, etc*/ if (test_cc(ctxt->b, ctxt->eflags))