All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: namit@cs.technion.ac.il
Cc: kvm@vger.kernel.org
Subject: re: KVM: x86: Handle errors when RIP is set during far jumps
Date: Mon, 27 Oct 2014 16:42:05 +0300	[thread overview]
Message-ID: <20141027134204.GA21267@mwanda> (raw)

Hello Nadav Amit,

The patch d1442d85cc30: "KVM: x86: Handle errors when RIP is set
during far jumps" from Sep 18, 2014, leads to the following static
checker warning:

	arch/x86/kvm/emulate.c:2015 em_jmp_far()
	warn: add some parenthesis here?

arch/x86/kvm/emulate.c
  2013          rc = assign_eip_far(ctxt, ctxt->src.val, new_desc.l);
  2014          if (rc != X86EMUL_CONTINUE) {
  2015                  WARN_ON(!ctxt->mode != X86EMUL_MODE_PROT64);
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
No idea what was intended here.  The negate has higher precedence than
the !=.

  2016                  /* assigning eip failed; restore the old cs */
  2017                  ops->set_segment(ctxt, old_sel, &old_desc, 0, VCPU_SREG_CS);
  2018                  return rc;
  2019          }

There are a couple other static checker warnings as well:

	arch/x86/kvm/emulate.c:579 assign_eip_far()
	warn: bitwise AND condition is false here

   567  static inline int assign_eip_far(struct x86_emulate_ctxt *ctxt, ulong dst,
   568                                 int cs_l)
   569  {
   570          switch (ctxt->op_bytes) {
   571          case 2:
   572                  ctxt->_eip = (u16)dst;
   573                  break;
   574          case 4:
   575                  ctxt->_eip = (u32)dst;
   576                  break;
   577          case 8:
   578                  if ((cs_l && is_noncanonical_address(dst)) ||
   579                      (!cs_l && (dst & ~(u32)-1)))
					     ^^^^^^^^
This is a very complicated way of saying zero.

   580                          return emulate_gp(ctxt, 0);
   581                  ctxt->_eip = dst;
   582                  break;
   583          default:
   584                  WARN(1, "unsupported eip assignment size\n");
   585          }
   586          return X86EMUL_CONTINUE;
   587  }

	arch/x86/kvm/emulate.c:2112 em_ret_far()
	warn: add some parenthesis here?

  2110          rc = assign_eip_far(ctxt, eip, new_desc.l);
  2111          if (rc != X86EMUL_CONTINUE) {
  2112                  WARN_ON(!ctxt->mode != X86EMUL_MODE_PROT64);
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  2113                  ops->set_segment(ctxt, old_cs, &old_desc, 0, VCPU_SREG_CS);
  2114          }
  2115          return rc;
  2116  }

regards,
dan carpenter

             reply	other threads:[~2014-10-27 13:42 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-27 13:42 Dan Carpenter [this message]
2014-10-27 14:05 ` KVM: x86: Handle errors when RIP is set during far jumps Nadav Amit
2014-10-27 22:03   ` [PATCH] KVM: x86: Fix far-jump to non-canonical check Nadav Amit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20141027134204.GA21267@mwanda \
    --to=dan.carpenter@oracle.com \
    --cc=kvm@vger.kernel.org \
    --cc=namit@cs.technion.ac.il \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.