2018-12-26 22:25:53

by Gustavo A. R. Silva

[permalink] [raw]
Subject: [PATCH][next] KVM: x86: Fix bit shifting in update_intel_pt_cfg

ctl_bitmask in pt_desc is of type u64. When an integer like 0xf is
being left shifted more than 32 bits, the behavior is undefined.

Fix this by adding suffix ULL to integer 0xf.

Addresses-Coverity-ID: 1476095 ("Bad bit shift operation")
Fixes: 6c0f0bba85a0 ("KVM: x86: Introduce a function to initialize the PT configuration")
Signed-off-by: Gustavo A. R. Silva <[email protected]>
---
arch/x86/kvm/vmx/vmx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index cbd55e7aeae5..251c68a74bbe 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -7012,7 +7012,7 @@ static void update_intel_pt_cfg(struct kvm_vcpu *vcpu)

/* unmask address range configure area */
for (i = 0; i < vmx->pt_desc.addr_range; i++)
- vmx->pt_desc.ctl_bitmask &= ~(0xf << (32 + i * 4));
+ vmx->pt_desc.ctl_bitmask &= ~(0xfULL << (32 + i * 4));
}

static void vmx_cpuid_update(struct kvm_vcpu *vcpu)
--
2.20.1



2018-12-27 17:24:16

by Wei Yang

[permalink] [raw]
Subject: Re: [PATCH][next] KVM: x86: Fix bit shifting in update_intel_pt_cfg

On Wed, Dec 26, 2018 at 02:40:59PM -0600, Gustavo A. R. Silva wrote:
>ctl_bitmask in pt_desc is of type u64. When an integer like 0xf is
>being left shifted more than 32 bits, the behavior is undefined.
>
>Fix this by adding suffix ULL to integer 0xf.
>
>Addresses-Coverity-ID: 1476095 ("Bad bit shift operation")
>Fixes: 6c0f0bba85a0 ("KVM: x86: Introduce a function to initialize the PT configuration")
>Signed-off-by: Gustavo A. R. Silva <[email protected]>

Looks good.

Reviewed-by: Wei Yang <[email protected]>

>---
> arch/x86/kvm/vmx/vmx.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
>index cbd55e7aeae5..251c68a74bbe 100644
>--- a/arch/x86/kvm/vmx/vmx.c
>+++ b/arch/x86/kvm/vmx/vmx.c
>@@ -7012,7 +7012,7 @@ static void update_intel_pt_cfg(struct kvm_vcpu *vcpu)
>
> /* unmask address range configure area */
> for (i = 0; i < vmx->pt_desc.addr_range; i++)
>- vmx->pt_desc.ctl_bitmask &= ~(0xf << (32 + i * 4));
>+ vmx->pt_desc.ctl_bitmask &= ~(0xfULL << (32 + i * 4));
> }
>
> static void vmx_cpuid_update(struct kvm_vcpu *vcpu)
>--
>2.20.1

--
Wei Yang
Help you, Help me

2018-12-28 17:35:39

by Luwei Kang

[permalink] [raw]
Subject: RE: [PATCH][next] KVM: x86: Fix bit shifting in update_intel_pt_cfg



> -----Original Message-----
> From: Gustavo A. R. Silva [mailto:[email protected]]
> Sent: Thursday, December 27, 2018 4:41 AM
> To: Kang, Luwei <[email protected]>; Paolo Bonzini <[email protected]>; Radim Kr?m?? <[email protected]>; Thomas Gleixner
> <[email protected]>; Ingo Molnar <[email protected]>; Borislav Petkov <[email protected]>; H. Peter Anvin <[email protected]>;
> [email protected]
> Cc: [email protected]; [email protected]; Gustavo A. R. Silva <[email protected]>
> Subject: [PATCH][next] KVM: x86: Fix bit shifting in update_intel_pt_cfg
>
> ctl_bitmask in pt_desc is of type u64. When an integer like 0xf is being left shifted more than 32 bits, the behavior is undefined.
>
> Fix this by adding suffix ULL to integer 0xf.
>
> Addresses-Coverity-ID: 1476095 ("Bad bit shift operation")
> Fixes: 6c0f0bba85a0 ("KVM: x86: Introduce a function to initialize the PT configuration")
> Signed-off-by: Gustavo A. R. Silva <[email protected]>
> ---
> arch/x86/kvm/vmx/vmx.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index cbd55e7aeae5..251c68a74bbe 100644
> --- a/arch/x86/kvm/vmx/vmx.c
> +++ b/arch/x86/kvm/vmx/vmx.c
> @@ -7012,7 +7012,7 @@ static void update_intel_pt_cfg(struct kvm_vcpu *vcpu)
>
> /* unmask address range configure area */
> for (i = 0; i < vmx->pt_desc.addr_range; i++)
> - vmx->pt_desc.ctl_bitmask &= ~(0xf << (32 + i * 4));
> + vmx->pt_desc.ctl_bitmask &= ~(0xfULL << (32 + i * 4));
> }

Looks good to me, thanks.

Reviewed-by: Luwei Kang <[email protected]>

>
> static void vmx_cpuid_update(struct kvm_vcpu *vcpu)
> --
> 2.20.1


2019-01-11 17:23:00

by Radim Krčmář

[permalink] [raw]
Subject: Re: [PATCH][next] KVM: x86: Fix bit shifting in update_intel_pt_cfg

2018-12-26 14:40-0600, Gustavo A. R. Silva:
> ctl_bitmask in pt_desc is of type u64. When an integer like 0xf is
> being left shifted more than 32 bits, the behavior is undefined.
>
> Fix this by adding suffix ULL to integer 0xf.
>
> Addresses-Coverity-ID: 1476095 ("Bad bit shift operation")
> Fixes: 6c0f0bba85a0 ("KVM: x86: Introduce a function to initialize the PT configuration")
> Signed-off-by: Gustavo A. R. Silva <[email protected]>
> ---

Applied, thanks.