kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] KVM: x86/mmu: Fix a benign Bitwise vs. Logical OR mixup
@ 2020-01-08  0:18 Sean Christopherson
  2020-01-08 10:13 ` Vitaly Kuznetsov
  2020-01-09 14:13 ` David Laight
  0 siblings, 2 replies; 9+ messages in thread
From: Sean Christopherson @ 2020-01-08  0:18 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: Sean Christopherson, Vitaly Kuznetsov, Wanpeng Li, Jim Mattson,
	Joerg Roedel, kvm, linux-kernel

Use a Logical OR in __is_rsvd_bits_set() to combine the two reserved bit
checks, which are obviously intended to be logical statements.  Switching
to a Logical OR is functionally a nop, but allows the compiler to better
optimize the checks.

Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
---
 arch/x86/kvm/mmu/mmu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
index 7269130ea5e2..72e845709027 100644
--- a/arch/x86/kvm/mmu/mmu.c
+++ b/arch/x86/kvm/mmu/mmu.c
@@ -3970,7 +3970,7 @@ __is_rsvd_bits_set(struct rsvd_bits_validate *rsvd_check, u64 pte, int level)
 {
 	int bit7 = (pte >> 7) & 1, low6 = pte & 0x3f;
 
-	return (pte & rsvd_check->rsvd_bits_mask[bit7][level-1]) |
+	return (pte & rsvd_check->rsvd_bits_mask[bit7][level-1]) ||
 		((rsvd_check->bad_mt_xwr & (1ull << low6)) != 0);
 }
 
-- 
2.24.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread
* Re: [PATCH] KVM: x86/mmu: Fix a benign Bitwise vs. Logical OR mixup
@ 2020-01-08  8:37 linmiaohe
  0 siblings, 0 replies; 9+ messages in thread
From: linmiaohe @ 2020-01-08  8:37 UTC (permalink / raw)
  To: Sean Christopherson, Paolo Bonzini
  Cc: Vitaly Kuznetsov, Wanpeng Li, Jim Mattson, Joerg Roedel, kvm,
	linux-kernel

Hi:
>
>Use a Logical OR in __is_rsvd_bits_set() to combine the two reserved bit checks, which are obviously intended to be logical statements.  Switching to a Logical OR is functionally a nop, but allows the compiler to better optimize the checks.
>
>Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
>---
> arch/x86/kvm/mmu/mmu.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index 7269130ea5e2..72e845709027 100644
>--- a/arch/x86/kvm/mmu/mmu.c
>+++ b/arch/x86/kvm/mmu/mmu.c
>@@ -3970,7 +3970,7 @@ __is_rsvd_bits_set(struct rsvd_bits_validate *rsvd_check, u64 pte, int level)  {
> 	int bit7 = (pte >> 7) & 1, low6 = pte & 0x3f;
> 
>-	return (pte & rsvd_check->rsvd_bits_mask[bit7][level-1]) |
>+	return (pte & rsvd_check->rsvd_bits_mask[bit7][level-1]) ||
> 		((rsvd_check->bad_mt_xwr & (1ull << low6)) != 0);  }
> 
>--
>2.24.1

On the call chain walk_shadow_page_get_mmio_spte --> is_shadow_zero_bits_set --> __is_rsvd_bits_set, the
return value is used as:
	reserved |= is_shadow_zero_bits_set(vcpu->arch.mmu, spte,
		iterator.level);

But this seems ok because val reserved is bool type.

Thanks.

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-01-15 18:20 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-08  0:18 [PATCH] KVM: x86/mmu: Fix a benign Bitwise vs. Logical OR mixup Sean Christopherson
2020-01-08 10:13 ` Vitaly Kuznetsov
2020-01-08 17:50   ` Jim Mattson
2020-01-09 14:13 ` David Laight
2020-01-09 15:26   ` Arvind Sankar
2020-01-09 16:36     ` Sean Christopherson
2020-01-09 17:24       ` Sean Christopherson
2020-01-15 18:20       ` Paolo Bonzini
2020-01-08  8:37 linmiaohe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).