Borislav Petkov
2022-May-20 09:26 UTC
[PATCH] x86/vmware: use unsigned integer for shifting
On Fri, May 20, 2022 at 12:58:57PM +0530, Shreenidhi Shedi wrote:> Shifting signed 32-bit value by 31 bits is implementation-defined > behaviour. Using unsigned is better option for this. > > Signed-off-by: Shreenidhi Shedi <sshedi at vmware.com> > --- > arch/x86/kernel/cpu/vmware.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/x86/kernel/cpu/vmware.c b/arch/x86/kernel/cpu/vmware.c > index c04b933f48d3..b28f789d3c56 100644 > --- a/arch/x86/kernel/cpu/vmware.c > +++ b/arch/x86/kernel/cpu/vmware.c > @@ -476,7 +476,7 @@ static bool __init vmware_legacy_x2apic_available(void) > { > uint32_t eax, ebx, ecx, edx; > VMWARE_CMD(GETVCPU_INFO, eax, ebx, ecx, edx); > - return (eax & (1 << VMWARE_CMD_VCPU_RESERVED)) == 0 && > + return (eax & (1U << VMWARE_CMD_VCPU_RESERVED)) == 0 && > (eax & (1 << VMWARE_CMD_LEGACY_X2APIC)) != 0;Or you can use the BIT() macro and simplify this expression even more: return !(eax & BIT(VMWARE_CMD_VCPU_RESERVED)) && (eax & BIT(VMWARE_CMD_LEGACY_X2APIC)); -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette
Srivatsa S. Bhat
2022-May-20 11:29 UTC
[PATCH] x86/vmware: use unsigned integer for shifting
Hi Shreenidhi, Thank you for the patch! On 5/20/22 2:26 AM, Borislav Petkov wrote:> On Fri, May 20, 2022 at 12:58:57PM +0530, Shreenidhi Shedi wrote: >> Shifting signed 32-bit value by 31 bits is implementation-defined >> behaviour. Using unsigned is better option for this. >>Can you also add a "Fixes:" tag with the commit that introduced the issue? I believe it is 4cca6ea04d31 ("x86/apic: Allow x2apic without IR on VMware platform").>> Signed-off-by: Shreenidhi Shedi <sshedi at vmware.com> >> --- >> arch/x86/kernel/cpu/vmware.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/arch/x86/kernel/cpu/vmware.c b/arch/x86/kernel/cpu/vmware.c >> index c04b933f48d3..b28f789d3c56 100644 >> --- a/arch/x86/kernel/cpu/vmware.c >> +++ b/arch/x86/kernel/cpu/vmware.c >> @@ -476,7 +476,7 @@ static bool __init vmware_legacy_x2apic_available(void) >> { >> uint32_t eax, ebx, ecx, edx; >> VMWARE_CMD(GETVCPU_INFO, eax, ebx, ecx, edx); >> - return (eax & (1 << VMWARE_CMD_VCPU_RESERVED)) == 0 && >> + return (eax & (1U << VMWARE_CMD_VCPU_RESERVED)) == 0 && >> (eax & (1 << VMWARE_CMD_LEGACY_X2APIC)) != 0; > > Or you can use the BIT() macro and simplify this expression even more: > > return !(eax & BIT(VMWARE_CMD_VCPU_RESERVED)) && > (eax & BIT(VMWARE_CMD_LEGACY_X2APIC)); > >That's better indeed. Regards, Srivatsa