lkml.org 
[lkml]   [2014]   [Jun]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] arch: x86: kvm: x86.c: Cleaning up uninitialized variables
Il 03/06/2014 15:06, Michael Tokarev ha scritto:
> 03.06.2014 16:04, Paolo Bonzini wrote:
>> Il 01/06/2014 01:05, Rickard Strandqvist ha scritto:
>>> There is a risk that the variable will be used without being initialized.
>>>
>>> This was largely found by using a static code analysis program called cppcheck.
>>>
>>> Signed-off-by: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
>>
>> No, there isn't. The full context looks like this:
>>
>> longmode = is_long_mode(vcpu) && cs_l == 1;
>> if (!longmode) {
>> param = ((u64)kvm_register_read(vcpu, VCPU_REGS_RDX) << 32) |
>> (kvm_register_read(vcpu, VCPU_REGS_RAX) & 0xffffffff);
>> ingpa = ((u64)kvm_register_read(vcpu, VCPU_REGS_RBX) << 32) |
>> (kvm_register_read(vcpu, VCPU_REGS_RCX) & 0xffffffff);
>> outgpa = ((u64)kvm_register_read(vcpu, VCPU_REGS_RDI) << 32) |
>> (kvm_register_read(vcpu, VCPU_REGS_RSI) & 0xffffffff);
>> }
>> #ifdef CONFIG_X86_64
>> else {
>> param = kvm_register_read(vcpu, VCPU_REGS_RCX);
>> ingpa = kvm_register_read(vcpu, VCPU_REGS_RDX);
>> outgpa = kvm_register_read(vcpu, VCPU_REGS_R8);
>> }
>> #endif
>>
>> and longmode must be zero if !CONFIG_X86_64:
>
> This is not the first time this code is attempted to be changed.
>
> Maybe adding an additional #ifdef..endif around the longmode
> assignment and the "if" above will solve this for good?
>
> Or maybe something like this:
>
> #ifdef CONFIG_X86_64
> if (!(is_long_mode(vcpu) && cs_l == 1)) {
> #else
> if (1) {
> #endif
> param = ((u64)kvm_register_read(vcpu, VCPU_REGS_RDX) << 32) |
> (kvm_register_read(vcpu, VCPU_REGS_RAX) & 0xffffffff);
> ingpa = ((u64)kvm_register_read(vcpu, VCPU_REGS_RBX) << 32) |
> (kvm_register_read(vcpu, VCPU_REGS_RCX) & 0xffffffff);
> outgpa = ((u64)kvm_register_read(vcpu, VCPU_REGS_RDI) << 32) |
> (kvm_register_read(vcpu, VCPU_REGS_RSI) & 0xffffffff);
> }
> else {
> param = kvm_register_read(vcpu, VCPU_REGS_RCX);
> ingpa = kvm_register_read(vcpu, VCPU_REGS_RDX);
> outgpa = kvm_register_read(vcpu, VCPU_REGS_R8);
> }
>
> , to make it all explicit and obvious?

... and ugly too.

If the first person who got the answer had reported a bug against
cppcheck, this perhaps would have been avoided.

Paolo



\
 
 \ /
  Last update: 2014-06-03 16:41    [W:0.304 / U:0.028 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site