On Tue, May 24, 2011 at 10:07:48PM +0300, Avi Kivity wrote:
> >>  @@ -2955,6 +2964,15 @@ static int check_perm_out(struct x86_emulate_ctxt 
> >> *ctxt)
> >>   {
> >>    struct decode_cache *c =&ctxt->decode;
> >>
> >>  + switch (c->b) {
> >>  + case 0x6e: /* outsb */
> >>  + case 0x6f: /* outsw/outsd */
> >>  + case 0xee: /* out dx,al */
> >>  + case 0xef: /* out dx,(e/r)ax */
> >>  +         c->dst.val = c->regs[VCPU_REGS_RDX];
> >>  +         break;
> >>  + }
> >>  +
> >>    c->src.bytes = min(c->src.bytes, 4u);
> >>    if (!emulator_io_permited(ctxt, c->dst.val, c->src.bytes))
> >>            return emulate_gp(ctxt, 0);
> >I'd rather do it at decoding stage by adding SrcDX/DstDX.
> >
> 
> Note we haven't decoded operands yet.  And this doesn't fix in $imm8, %al.
> 
We haven't? check_perm is called from x86_emulate_insn() and operands are
decode in x86_decode_insn(). So $imm8, %al should work now. Or am I
missing something?

> Maybe we need an additional check site after operands are fetched.
> 
> -- 
> I have a truly marvellous patch that fixes the bug which this
> signature is too narrow to contain.

--
                        Gleb.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to