|
@@ -665,7 +665,7 @@ static int __linearize(struct x86_emulate_ctxt *ctxt,
|
|
ulong la;
|
|
ulong la;
|
|
u32 lim;
|
|
u32 lim;
|
|
u16 sel;
|
|
u16 sel;
|
|
- unsigned cpl, rpl;
|
|
|
|
|
|
+ unsigned cpl;
|
|
|
|
|
|
la = seg_base(ctxt, addr.seg) + addr.ea;
|
|
la = seg_base(ctxt, addr.seg) + addr.ea;
|
|
switch (ctxt->mode) {
|
|
switch (ctxt->mode) {
|
|
@@ -699,11 +699,6 @@ static int __linearize(struct x86_emulate_ctxt *ctxt,
|
|
goto bad;
|
|
goto bad;
|
|
}
|
|
}
|
|
cpl = ctxt->ops->cpl(ctxt);
|
|
cpl = ctxt->ops->cpl(ctxt);
|
|
- if (ctxt->mode == X86EMUL_MODE_REAL)
|
|
|
|
- rpl = 0;
|
|
|
|
- else
|
|
|
|
- rpl = sel & 3;
|
|
|
|
- cpl = max(cpl, rpl);
|
|
|
|
if (!(desc.type & 8)) {
|
|
if (!(desc.type & 8)) {
|
|
/* data segment */
|
|
/* data segment */
|
|
if (cpl > desc.dpl)
|
|
if (cpl > desc.dpl)
|