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
next 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.