On 01/17/2013 06:20:03 PM, Alexander Graf wrote:
On 18.01.2013, at 01:11, Scott Wood wrote:
> On 01/17/2013 04:50:39 PM, Alexander Graf wrote:
>> @@ -1024,9 +1001,11 @@ void kvmppc_mmu_map(struct kvm_vcpu *vcpu,
u64 eaddr, gpa_t gpaddr,
>> {
>> struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu);
>> struct tlbe_priv *priv;
>> - struct kvm_book3e_206_tlb_entry *gtlbe, stlbe;
>> + struct kvm_book3e_206_tlb_entry *gtlbe, stlbe = {};
>
> Is there a code path in which stlbe gets used but not fully filled
in
> without this?
I am hoping not, but when I wrote this patch gcc suddenly jumped at
me claiming that the whole struct can get used uninitialized:
arch/powerpc/kvm/e500_mmu_host.c: In function ‘kvmppc_mmu_map’:
arch/powerpc/kvm/e500_mmu_host.c:533: error: ‘stlbe.mas1’ may be used
uninitialized in this function
arch/powerpc/kvm/e500_mmu_host.c:533: error: ‘stlbe.mas2’ may be used
uninitialized in this function
arch/powerpc/kvm/e500_mmu_host.c:533: error: ‘stlbe.mas7_3’ may be
used uninitialized in this function
arch/powerpc/kvm/e500_mmu_host.c:533: error: ‘stlbe.mas8’ may be used
uninitialized in this function
If you have any idea where this could come from, please let me know
:).
I can't reproduce with either GCC 4.5.1 or GCC 4.7.2. Maybe from a
non-final version of the patch? It would be nice to not have this, and
have GCC be able to detect if we're actually missing something rather
than have it get zeroed.
BTW, it's "stlbe = {}" in this patch but after the file split, somehow
come out as "stlbe = { }". Was that patch supposed to be just a simple
cut and paste of part of the file?
-Scott
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html